niedziela, 2 września 2018

SQL – klauzula Group By


SQL – klauzula Group By

Klauzula SQL GROUP BY jest używana we współpracy z instrukcją SELECT do rozmieszczania identycznych danych w grupach. Ta klauzula GROUP BY jest zgodna z klauzulą ​​WHERE w instrukcji SELECT i poprzedza klauzulę ORDER BY.
Składnia
Podstawowa składnia klauzuli GROUP BY jest pokazana w poniższym bloku kodu. Klauzula GROUP BY musi spełniać warunki klauzuli WHERE i musi poprzedzać klauzulę ORDER BY, jeśli jest używana.
SELECT kolumna1, kolumna2
FROM nazwa_tabeli
WHERE [ warunek ]
GROUP BY kolumna1, kolumna2
ORDER BY kolumna1, kolumna2

Przykład
Weź pod uwagę tabelę KLIENCI, która ma następujące rekordy -
+----+----------+-----+-----------+----------+
id,   nazwisko,   wiek,  adres,        pensja
'1', 'Zawadzki',  '32', 'Warszawska', '2000.00'
'2', 'Kowalczyk', '25', 'Sokratesa',  '1500.00'
'3', 'Kot',       '23', 'Darwina',    '3500.00'
'4', 'Kowalska',  '25', 'Modlińska',  '6500.00'
'5', 'Sapal',     '27', 'Wspólna',    '8500.00'
'6', 'Nowak',     '22', 'Nalewki',    '4500.00'
'7', 'Makowska',  '24', 'Piaseczno',  '10000.00'
+----+----------+-----+-----------+----------+
Jeśli chcesz poznać całkowitą kwotę wynagrodzenia dla każdego klienta, zapytanie GROUP BY będzie wyglądało następująco.
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
   GROUP BY NAME;
To dałoby następujący wynik -
+----------+-------------+
nazwisko,    sum(pensja)
'Kot',       '2000.00'
'Kowalczyk', '1500.00'
'Kowalska',  '6500.00'
'Makowska',  '10000.00'
'Nowak',     '4500.00'
'Sapal',     '8500.00'
'Zawadzki',  '2000.00'|
+----------+-------------+
Teraz spójrzmy na tabelę, w której w tabeli KLIENCI znajdują się następujące rekordy o zduplikowanych nazwach -
+----+----------+-----+-----------+----------+
 id,  nazwisko,    wiek, adres,        pensja
'1', 'Zawadzki',  '32', 'Warszawska', '2000.00'
'2', 'Kowalczyk', '25', 'Sokratesa',  '1500.00'
'3', 'Kot',       '23', 'Darwina',    '2000.00'
'4', 'Kowalczyk', '25', 'Modlińska',  '6500.00'
'5', 'Nowak',     '27', 'Wspólna',    '8500.00'
'6', 'Nowak',     '22', 'Blizne',     '4500.00'
'7', 'Nowak',     '24', 'Piaseczno',  '10000.00'
+----+----------+-----+-----------+----------+
Teraz ponownie, jeśli chcesz poznać całkowitą kwotę wynagrodzenia dla każdego klienta, zapytanie GROUP BY będzie wyglądało następująco:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
   GROUP BY NAME;
To dałoby następujący wynik -
+---------+-------------+
nazwisko,    sum(pensja)
'Kot',       '2000.00'
'Kowalczyk', '8000.00'
'Nowak',    '23000.00'
'Zawadzki', '2000.00'
+---------+-------------+


Brak komentarzy:

Prześlij komentarz