Skip navigation

Példa

Az átlagnál idősebb taxisok

SELECT nev, YEAR( FROM_DAYS( DATEDIFF(CURRENT_DATE , SOFOR.szuldatum) ) ) AS eletkor
FROM SOFOR
WHERE YEAR( FROM_DAYS( DATEDIFF(CURRENT_DATE , SOFOR.szuldatum) ) ) > (
       SELECT AVG(YEAR( FROM_DAYS( DATEDIFF(CURRENT_DATE , SOFOR.szuldatum) ) )) FROM SOFOR );


Magyarázat:

A lekérdezés első pillantásra bonyolultnak tűnik, ami azért van, mert a MySQL függvényeivel nehéz az életkort közvetlenül kiszámolni. Bontsuk ezért részekre az utasítást!

  • YEAR( FROM_DAYS( DATEDIFF(CURRENT_DATE , SOFOR.szuldatum) ) ) AS eletkor: Ez az utasítás a sofőrök életkorát számolja ki. Ez a kifejezés több helyen megjelenik a lekérdezésben.
    • A CURRENT_DATE a jelenlegi rendszerdátumot tartalmazza.
    • A DATEDIFF() függvény a két, argumentumként megadott dátum különbségét számolja ki napokban.
    • A FROM_DAYS() függvény a napok számából egy dátumot állít elő, a kifejezésben így a két dátum különbségét kapjuk meg dátum formájában.
    • A YEAR() függvény egy dátumból az évek számát adja vissza.
  • A lekérdezésben szereplő alkérdést félkövérrel emeltük ki. Ez az alkérdés a sofőrök átlagos életkorát számolja. ki
  • A főkérdésben a sofőrök nevét, életkorát listázzuk ki. A WHERE záradékban ellenőrizzük le, hogy az életkor nagyobb legyen az átlagos életkornál.