Eszköztár
152 Kezdőlap - Webszerkesztés - MySQL - Tagdíj
ujdomainek.hu

Tagdíj

adatbázis

Feladat

Egy tagdíjbefizetéseket nyilvántartó rendszer a következő adattáblákat tartalmazza:

		Ugyfel			Befiz
		------			-----

		Azon			Azon
		Nev			Datum
		SzulEv			Osszeg
		IrSzam
		Orsz

	ahol

		Azon	N 10	az ügyfél azonosítója
		Nev	C 30	az ügyfél neve
		SzulEv	N 4	az ügyfél születési évszáma
		IrSzam	N 4	az ügyfél lakhelyének irányítószáma
		Orsz	C 3	az ügyfél országának kódja
		Datum	DT	a befizetés dátuma
		Osszeg	N 10	a befizetés összege

Az adatbázis az alábbi linkről tölthető le: SQL lekérdezésekkel adjon választ az alábbi kérdésekre. Az elkészült és működő lekérdezéseket mentse el egy .txt szöveges fájlba a kérdésekhez tartozó sorszám feltüntetésével.

Kérdések:
  1. Hogy hívják az egyes ügyfeleket? Jelenítse meg a nevüket ABC-sorrendben!
  2. Listázza ki a magyarországi ügyfeleket életkoruk szerint! Kezdje a legfiatalabbal!

    SELECT nev, szulev, YEAR( NOW() )-szulev AS eletkor
    FROM ...
    ...
    ...

  3. Adja meg a Pest megyei ügyfeleket! (Irányítószámuk 2-vel kezdődik.)
  4. Mennyi pénzt fizettek be összesen az ügyfelek?
  5. Mekkora összegű egy átlagos befizetés?
  6. Mennyi volt az eddigi legkisebb illetve legnagyobb befizetett összeg?
  7. Hány darab befizetés szerepel a nyilvántartásban?
  8. Milyen összegeket, és mikor fizetett Török Bálint?

    SELECT datum, nev, osszeg
    FROM ugyfel, befiz
    WHERE ugyfel.azon = befiz.azon
    AND nev='Török Bálint'

  9. Mennyit fizetett összesen Nagy Károly?
  10. Mennyit fizettek összesen a nem magyarországi befizetők?
  11. Mennyit fizettek az egyes ügyfelek?
  12. Mi az első három legtöbbet befizető ügyfél sorrendje?
  13. Mekkora összegű befizetések történtek az év egyes hónapjaiban?

    SELECT MONTH(datum) AS ho , ...
    FROM ...
    ...

  14. Melyek azok a napok, amikor több befizetés is történt?
  15. Mely befizetések régebbiek egy évnél?

    SELECT ...
    FROM ...
    WHERE DATEDIFF( NOW() , datum ) >365

  16. Mennyi pénzt fizettek be az elmúlt 365 napban?
  17. Ki a legidősebb ügyfél?
  18. Ki, és mikor követte el a legkisebb összegű befizetést?
  19. Kinek a legkevesebb az összes befizetése?
  20. Van-e olyan ügyfél, aki még egyáltalán nem fizetett?

    SELECT nev FROM ugyfel
    WHERE azon NOT IN (SELECT azon FROM befiz)

  21. Fejenként mennyit fizettek átlagosan az ügyfelek, ha az átlagba csak a fizető ügyfelek számítanak?

    SELECT AVG(fejenkent)
    FROM
    (SELECT SUM(osszeg) AS fejenkent
    FROM befiz GROUP BY azon)

    AS xyz

    vagy pedig

    SELECT SUM(osszeg)/COUNT(DISTINCT azon)
    FROM befiz

  22. Fejenként mennyit fizettek átlagosan az ügyfelek a nemfizető ügyfeleket is beszámítva?
  23. Kik azok az ügyfelek, akik az átlagosnál többet fizettek?

    SELECT nev, SUM(osszeg) AS ossz
    FROM ugyfel, befiz
    WHERE ugyfel.azon = befiz.azon
    GROUP BY befiz.azon
    HAVING ossz > (SELECT SUM(osszeg)/COUNT(DISTINCT azon) FROM befiz)
    ORDER BY 2 DESC

előző oldal random oldal következő oldal


Eddig 5 hozzászólás van a témához:

2020-01-14 18:04 Jeroxy Nagyon jó! Vizsgára készültem vele az egyetemre, teljesen megfelelt és segített összerakni a lekérdezéseket a fejemben, nagyon köszönöm a segítséget!

2020-01-15 16:07 Admin Kedves Jeroxy,

én pedig köszönöm a visszajelzést, és gratulálok!

2022-02-15 20:56 Erdős Ádám András Nagyon jó a feladatok egymásra épülési sorrendje, de a 17. es azt sugallja nekem, hogy DATEDIFF() -e lkéne megoldanom. Viszont én így csináltam: "SELECT nev FROM ugyfel GROUP BY szulev LIMIT 0,1;" Nagyon érdekelne a másik megoldás is ha van Admin.

2022-02-16 18:20 Admin Kedves Ádám,
a DATEDIFF() itt biztosan nem játszik. Mindig az a legidősebb, aki legrégebben született. Teljesen mindegy, milyen dátum van ma. A LIMIT 0,1-es megoldás majdnem jó, valószínűleg csak az elírás pontosítását igényli:
SELECT nev FROM ugyfel ORDER BY szulev LIMIT 0,1

Ami még ezen kívül szóba jöhetett volna, az a MIN() függvény - de ennek használata beágyazott lekérdezést igényelne. Ilyenformán a LIMIT-es megoldás egyszerűbb.

2022-02-16 18:39 Erdős Ádám András Kedves Admin,
Köszönöm szépen!




Új hozzászólás:
E-mail cím:


Erre a címre küldjük ki a hozzászólás jóvá- hagyásához szükséges linket. Az e-mail címet sehol nem tesszük közzé.

Név:


Ez a név fog megjelenni az Ön hozzászólásai mellett.

Mennyi tizenkettő + három?
Számjegyekkel írja be!



Ez a robotok beírása elleni védelem miatt szükséges ellenőrzés.


© infojegyzet.hu, 2009. február