SQL groeperen op datum

Sql Groeperen Op Datum



De SQL GROUP BY-clausule is een krachtige tool voor het groeperen en aggregeren van de gegevens. Het biedt een uitstekende manier om de gegevens te groeperen op basis van specifieke criteria en vervolgens een actie uit te voeren op de resulterende groepen.

Een veelvoorkomende use case voor GROUP BY is groeperen op datum. In deze zelfstudie leren we de grondbeginselen van het werken met de GROUP BY-clausule en bespreken we hoe we deze kunnen gebruiken om de gegevens op datum in SQL te groeperen.







OPMERKING: We gaan ervan uit dat je een basiskennis van SQL hebt. Voor demonstratiedoeleinden gebruiken we de voorbeelden in deze zelfstudie met MySQL 8. U kunt de concepten van deze zelfstudie echter vrij overbrengen naar de andere op SQL gebaseerde database-engines.



Voorbeeldtabel:

De eerste stap is het opzetten van een basistabel en voorbeeldgegevens voor demonstratie. Als u een bestaande tabel heeft waarmee u wilt werken, kunt u dit gedeelte gerust overslaan.



Gebruik de volgende query om de tabel te maken:





CREATE TABLE-transacties (
ID kaart int niet null auto_increment primaire sleutel,
datum DATUM,
bedrag DECIMAAL ( 10 , 2 )
) ;


Nadat u de tabel hebt gemaakt, voegt u de voorbeeldgegevens in zoals hieronder wordt weergegeven:

INSERT INTO transacties ( datum , hoeveelheid )
WAARDEN
( '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 uur ) ,
( '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 ) ;


Dit zou de willekeurige gegevens aan de transactietabel moeten toevoegen. We kunnen de select-instructie gebruiken om de resulterende tabel als volgt weer te geven:



selecteren * van transacties;


Uitvoertabel:


Zodra we de gegevens hebben voorbereid, kunnen we doorgaan naar de volgende stap.

SQL groeperen op datum

Zoals je kunt raden, gebruiken we de GROUP BY-clausule om de gegevens in een bepaalde tabel te partitioneren op basis van specifieke waarden. De zinsbouw is als volgt:

SELECTEER kolom1, kolom2, ...
VAN tafelnaam
GROEPEREN OP kolom1, kolom2, ...;


In de vorige syntaxis gebruiken we de GROUP BY-clausule om de kolommen op te geven waarop u de gegevens wilt groeperen.

Uit de vorige tabel kunnen we de datumkolom gebruiken om de gegevens te groeperen zoals weergegeven in de volgende query:

SELECTEER datum , SOM ( hoeveelheid ) als totaalbedrag
VAN transacties
GROEP OP datum ;


De vorige query voert de basisberekeningen uit en voegt het totale bedrag voor elke dag toe met behulp van de functie sum(). Vervolgens groeperen we de gegevens op basis van de datumwaarden. De resulterende tabel is als volgt:

Formaat Datum

Soms moeten we de datum opmaken en leesbaarder maken. Een voorbeeld is als volgt:

SELECTEER DATE_FORMAT ( datum , '%m/%d/%Y' ) als geformatteerde_datum, SUM ( hoeveelheid ) als totaalbedrag
VAN transacties
GROEP OP datum ;


Dit zou de datumwaarden als volgt moeten retourneren in het opgegeven formaat:

Datumbereik SQL-filter

We kunnen de resultaatset ook filteren op een datumbereik met behulp van de WHERE-component. Een voorbeeld is als volgt:

SELECTEER DATE_FORMAT ( datum , '%m/%d/%Y' ) als geformatteerde_datum, SUM ( hoeveelheid ) als totaalbedrag
VAN transacties
WAAR datum TUSSEN '2023-01-01' EN '2023-01-15'
GROEP OP datum ;


De resulterende tabel wordt als volgt weergegeven:


Daar heb je het! Een manier om de gegevens uit een bepaalde tabel te groeperen op basis van datumwaarden.

Conclusie

Deze zelfstudie verkende de grondbeginselen van het werken met de GROUP BY-component in SQL om de gegevens te sorteren op basis van specifieke waarden. Hierdoor konden we bespreken hoe de GROUP BY-component moet worden gebruikt om de gegevens te verdelen op basis van datumwaarden.