Klauzula SQL GROUP BY je výkonný nástroj na zoskupovanie a agregáciu údajov. Poskytuje vynikajúci spôsob, ako zoskupiť údaje na základe špecifických kritérií a potom vykonať akciu na výsledných skupinách.
Jedným z bežných prípadov použitia pre GROUP BY je zoskupovanie podľa dátumov. V tomto návode sa naučíme základy práce s klauzulou GROUP BY a prediskutujeme, ako ju použiť na zoskupenie údajov podľa dátumov v SQL.
POZNÁMKA: Predpokladáme, že máte základné znalosti jazyka SQL. Na demonštračné účely používame príklady v tomto návode s MySQL 8. Koncepty tohto návodu však môžete voľne preniesť na iné databázové stroje založené na SQL.
Vzorová tabuľka:
Prvým krokom je nastavenie základnej tabuľky a vzorových údajov na demonštráciu. Ak máte existujúcu tabuľku, s ktorou chcete pracovať, pokojne túto časť preskočte.
Na vytvorenie tabuľky použite nasledujúci dotaz:
Transakcie CREATE TABLE (
id int nie je null primárny kľúč auto_increment,
dátum DÁTUM,
čiastka DECIMAL ( 10 , 2 )
) ;
Po vytvorení tabuľky vložte vzorové údaje, ako je znázornené v nasledujúcom texte:
HODNOTY
( '2023-01-01' , 100,00 ) ,
( '2023-01-02' , 50,00 ) ,
( '2023-01-03' , 75,00 ) ,
( '2023-01-04' , 200,00 ) ,
( '2023-01-05' , 150,00 ) ,
( '2023-01-06' , 175,00 ) ,
( '2023-01-07' , 50,00 ) ,
( '2023-01-08' , 100,00 ) ,
( '2023-01-09' , 25:00 ) ,
( '2023-01-10' , 75,00 ) ,
( '2023-01-11' , 150,00 ) ,
( '2023-01-12' , 200,00 ) ,
( '2023-01-13' , 250,00 ) ,
( '2023-01-14' , 175,00 ) ,
( '2023-01-15' , 150,00 ) ,
( '2023-01-16' , 100,00 ) ,
( '2023-01-17' , 50,00 ) ,
( '2023-01-18' , 75,00 ) ;
Toto by malo pridať náhodné údaje do tabuľky transakcií. Pomocou príkazu select môžeme výslednú tabuľku zobraziť takto:
vyberte * z transakcií;
Výstupná tabuľka:
Keď máme dáta pripravené, môžeme pristúpiť k ďalšiemu kroku.
Skupina SQL podľa dátumu
Ako môžete hádať, klauzulu GROUP BY používame na rozdelenie údajov v danej tabuľke na základe konkrétnych hodnôt. Syntax klauzuly je nasledovná:
VYBERTE stĺpec1, stĺpec2, ...FROM table_name
GROUP BY stĺpec1, stĺpec2, ...;
V predchádzajúcej syntaxi používame klauzulu GROUP BY na určenie stĺpcov, podľa ktorých chcete zoskupiť údaje.
Z predchádzajúcej tabuľky môžeme použiť stĺpec dátumu na zoskupenie údajov, ako je znázornené v nasledujúcom dotaze:
VYBRAŤ dátum , SÚČET ( čiastka ) ako celková_sumaZ transakcií
GROUP BY dátum ;
Predchádzajúci dotaz vykoná základné výpočty a pridá celkovú sumu za každý deň pomocou funkcie sum(). Údaje potom zoskupíme na základe hodnôt dátumu. Výsledná tabuľka je nasledovná:
Formátovať dátum
Niekedy môže byť potrebné formátovať dátum a urobiť ho čitateľnejším. Príklad je nasledujúci:
SELECT DATE_FORMAT ( dátum , '%m/%d/%Y' ) ako formatted_date, SUM ( čiastka ) ako celková_sumaZ transakcií
GROUP BY dátum ;
To by malo vrátiť hodnoty dátumu v zadanom formáte takto:
Rozsah dátumov filtra SQL
Množinu výsledkov môžeme filtrovať aj podľa rozsahu dátumov pomocou klauzuly WHERE. Príklad je nasledujúci:
SELECT DATE_FORMAT ( dátum , '%m/%d/%Y' ) ako formatted_date, SUM ( čiastka ) ako celková_sumaZ transakcií
KDE dátum MEDZI '2023-01-01' A '2023-01-15'
GROUP BY dátum ;
Výsledná tabuľka je znázornená nasledovne:
Tu to máte! Spôsob zoskupenia údajov z danej tabuľky na základe hodnôt dátumu.
Záver
Tento tutoriál skúmal základy práce s klauzulou GROUP BY v SQL na triedenie údajov na základe konkrétnych hodnôt. To nám umožnilo pokryť, ako používať klauzulu GROUP BY na rozdelenie údajov na základe hodnôt dátumu.