Tartalomjegyzék

< SQL

SQL Függvények

sum()

Összegzés

SELECT SUM(fizetes) AS Osszfizu
FROM Szemely;

avg()

Az avg() függvény átlag számítására való. Szám adatok átlagát kaphatjuk meg vele.

SELECT avg(fizetes) AS AtlagFizetes
FROM Szemely;

format()

Dátum

SELECT format(szuletes, 'MM-DD') AS Szuletes
FROM Szemely
;
SELECT format(szuletes, "yyyy") FROM Dolgozok
SELECT format(now(), "YYYY")

Access hónap, nap és év forma:

SELECT format(szuletes, "mmmm dd, yyyy") FROM Dolgozok

Eredménye például:

május 04, 1950
november 26, 1974
október 18, 1974
augusztus 23, 1954

MySQL hónap, nap és év forma:

SELECT date_format(szuletes, "%M %d, %Y") FROM Dolgozok
May 04, 1950
November 26, 1974
October 18, 1987
August 23, 1954

Access óra, perc napszak:

SELECT format(now(), "hh:mm AMPM")

Eredménye például:

12:41 du.

MySQL óra, perc napszak:

SELECT date_format(now(), "%H:%i %p")

Eredménye például:

12:56 PM

Hány éves? (MySQL-ben)

SELECT YEAR(now()) - YEAR(szuletes) AS Életkor
FROM Szemelyek
WHERE nev="Archer Vitália"

Lehetséges eredmény:

53

Esetleg:

SELECT FLOOR(datediff(now(), szuletes )/365.25) AS Életkor
FROM Szemelyek
WHERE nev="Archer Vitália"

Kicsit pontosabban:

SELECT from_days(datediff(now(), szuletes )) AS Életkor
FROM Szemelyek
WHERE nev="Archer Vitália"

Lehetséges eredmény:

0052-09-03

Esetleg így:

SELECT 
    DATE_FORMAT(
        FROM_DAYS(
            DATEDIFF(CURRENT_DATE, szuletes)
        ),
        '%y év %m hónap %d nap'
    ) AS Életkor
 
FROM Szemelyek
WHERE nev="Archer Vitália"

Lehetséges eredmény:

52 év 09 hónap 03 nap

Na meg így:

SELECT FLOOR(ABS(DATEDIFF(CURRENT_TIMESTAMP, szuletes))/365.25) AS Életkor
FROM Szemelyek
WHERE nev="Archer Vitália"

Lehetséges eredmény: 52

Hány éves? (Accessben)

Esetleg a select után:

...
DateDiff("yyyy", szuletes, Now())
...

Szám

Csak MySQL-en:

SELECT format(35.12345, 3)

A kimenet: 35.123

Access:

SELECT format(fizetes, "Scientific") FROM Dolgozok;

Accessben lehetséges állandók:

count()

Szeretnénk megszámolni bizonyos adatokból hány darab van. Erre használható a count() függvény:

select count(az) as Szolnokiak
from Szemely
where telepules = "Szolnok";

Azonos településneveket csak egyszer számoljunk:

select count(distinct telepules)
from dolgozok;

min()/max()

Legkisebb, legnagyobb kiválasztása

Szemely tábla felépítése:

az nev telepules cim szuletes belepes fizetes diploma
1 Nagy József Szolnok Tél u. 23. 1975-08-25 2004-03-01 570000 1
2 Pék Réka Miskolc Árny u. 29. 1977-02-03 2006-04-01 389000 1
3 Kis Mária Debrecen Vértes u. 20. 1981-04-01 2005-03-27 680000 1
4 Érdek Júlia Szeged Bíró u. 25. 1982-03-08 2008-09-01 190000 0
5 Boros Evelin Szolnok Barát u. 78. 1988-02-22 2001-01-01 850000 0
6 Lórem Kinga Szeged Pilisi út 17. 1973-08-02 2000-01-01 878000 1
7 Fix Béla Szolnok Burkus u. 80. 1991-11-05 2008-01-01 351000 1

Legkorábban jött dolgozó:

SELECT MIN(belepes) FROM `Szemely`

Legkésőbb jött dolgozó:

SELECT MAX(belepes) FROM `Szemely`

Legkevesebb fizetés:

SELECT MIN(fizetes) FROM `Szemely`

Legtöbb fizetés:

SELECT MAX(fizetes) FROM `Szemely`

A LIMIT direktíva használata.

Legkevesebb fizetés:

SELECT fizetes FROM Szemely
ORDER BY fizetes
LIMIT 1

Legtöbb fizetés:

SELECT fizetes FROM Szemely
ORDER BY fizetes DESC
LIMIT 1

Az Access adatbázis-kezelőkben a SELECT után tett TOP 1 valósítja meg ugyanezt.

len()/length()

Egy karaktersorozat vagy egy szám hány darab karakterből vagy számjegyből áll:

SELECT len(nev) FROM Dolgozok

Ha nem szűrünk, automatikusan rekordonként mutatja.

MySQL-ben length:

SELECT LENGTH(nev) FROM Dolgozok

Dátumok

Most

select now()

Különbség

Vonjuk ki egyik dátumból a másikat (Mariadb 10-től): Legyen két dátum mező, belepes és kilepes. Szeretnénk megtudni hány nap telt el a kettő között:

select datediff(belepes, kilepes)
select datediff('2021-01-15', '2021-03-15');

Az eredmény: -59

Az abs() függvénnyel vehetjük az abszolút értékét.

Részek

select year(now);
select year(szuletes);
select month(now);
select month(szuletes);
select day(now);
select day(szuletes);
select hour(now);
select hour(szuletes);
select minute(now);
select minute(szuletes);
select second(now);
select second(szuletes);

Számítások csoportokra

A következőkben a dolgozókat szeretnénk megszámolni településenként:

SELECT COUNT(az) AS "Dolgozok telepulesenkent"
FROM Szemely
GROUP BY telepules;