poniedziałek, 24 września 2018

SQLite - klauzula GROUP BY


SQLite - klauzula GROUP BY

Klauzula SQLite GROUP BY jest używana we współpracy z instrukcją SELECT do rozmieszczania identycznych danych w grupach.
Klauzula GROUP BY jest zgodna z klauzulą ​​WHERE w instrukcji SELECT i poprzedza klauzulę ORDER BY.
Składnia
Poniżej znajduje się podstawowa składnia klauzuli GROUP BY. Klauzula GROUP BY musi spełniać warunki klauzuli WHERE i musi poprzedzać klauzulę ORDER BY, jeśli jest używana.
SELECT lista_kolumn
FROM nazwa_tabeli
WHERE [ warunek ]
GROUP BY kolumna1, kolumna2....kolumnaN
ORDER BY kolumna1, kolumna2....kolumnaN
Możesz użyć więcej niż jednej kolumny w klauzuli GROUP BY. Upewnij się, że niezależnie od kolumny, której używasz do grupowania, ta kolumna powinna być dostępna na liście kolumn.
Przykład
Rozważ tabelę PRACOWNIK z następującymi zapisami.
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
2           Piotr       25          Piaseczno   1500.0
3           Tomasz      23          Grodzisk    2000.0
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0
6           Katarzyna   22          Marki       4500.0
7           Jan         24          Kraków      4500.0
Jeśli chcesz poznać całkowitą kwotę wynagrodzenia dla każdego klienta, zapytanie GROUP BY będzie wyglądało następująco:
sqlite> SELECT NAZWISKO, SUM(PENSJA) FROM PRACOWNIK GROUP BY NAZWISKO;
Spowoduje to uzyskanie następującego wyniku -
nazwisko    SUM(PENSJA)
----------  -----------
Adam        2000.0
Dawid       8500.0
Jan         4500.0
Katarzyna   4500.0
Marek       6500.0
Piotr       1500.0
Tomasz      2000.0
Teraz, utworzymy trzy kolejne rekordy w tabeli PRACOWNIK, używając następujących instrukcji INSERT.
INSERT INTO PRACOWNIK VALUES (8, 'Paweł', 24, 'Zielonka', 3500 );
INSERT INTO PRACOWNIK VALUES (9, 'Jan', 44, 'Kobyłka', 5000 );
INSERT INTO PRACOWNIK VALUES (10, 'Jan', 45, 'Nieporęt', 5000 );
Teraz nasza tabela zawiera następujące rekordy z duplikatami nazw.
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
1           Adam        32          Warszawa    2000.0
2           Piotr       25          Piaseczno   1500.0
3           Tomasz      23          Grodzisk    2000.0
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0
6           Katarzyna   22          Marki       4500.0
7           Jan         24          Kraków      4500.0
8           Paweł       24          Zielonka    3500.0
9           Jan         44          Kobyłka     5000.0
10          Jan         45          Nieporęt    5000.0
Ponownie, użyjmy tej samej instrukcji do grupowania wszystkich rekordów za pomocą kolumny NAZWA w następujący sposób:
sqlite> SELECT NAZWISKO, SUM(PENSJA) FROM PRACOWNIK GROUP BY NAZWISKO ORDER BY NAZWISKO;
Spowoduje to uzyskanie następującego wyniku.
nazwisko    SUM(PENSJA)
----------  -----------
Adam        2000.0
Dawid       8500.0
Jan         14500.0
Katarzyna   4500.0
Marek       6500.0
Paweł       3500.0
Piotr       1500.0
Tomasz      2000.0
Użyjmy klauzuli ORDER BY wraz z klauzulą ​​GROUP BY w następujący sposób:
sqlite>  SELECT NAZWISKO, SUM(PENSJA)
   FROM PRACOWNIK GROUP BY NAZWISKO ORDER BY NAZWISKO DESC;
Spowoduje to uzyskanie następującego wyniku.
nazwisko    SUM(PENSJA)
----------  -----------
Tomasz      2000.0
Piotr       1500.0
Paweł       3500.0
Marek       6500.0
Katarzyna   4500.0
Jan         14500.0
Dawid       8500.0
Adam        2000.0


Brak komentarzy:

Prześlij komentarz