Database
 sql >> Baza danych >  >> RDS >> Database

Jak używać klauzuli GROUP BY w SQL

W tym artykule dotyczącym SQL dowiemy się o klauzuli GROUP BY oraz o tym, jak jej używać w SQL. Omówimy również użycie klauzuli GROUP BY z klauzulą ​​WHERE.

Co to jest klauzula GROUP BY?

Klauzula GROUP BY jest klauzulą ​​SQL używaną w instrukcji SELECT do zarządzania tymi samymi rekordami kolumny w grupie za pomocą funkcji SQL.

Składnia klauzuli GROUP BY:

SELECT columnname1, columnname2, columnname3 FROM tablename GROUP BY columnname;

Możemy użyć wielu kolumn z tabeli w klauzuli GROUP BY.

Jest kilka kroków, musimy nauczyć się, jak używać klauzuli GROUP BY w zapytaniu SQL:

1. Utwórz nową bazę danych lub użyj istniejącej bazy danych, wybierając bazę danych za pomocą słowa kluczowego USE, po którym następuje nazwa bazy danych.

2. Utwórz nową tabelę w wybranej bazie danych lub możesz użyć już utworzonej tabeli.

3. Jeśli tabela jest nowo utworzona, wstaw rekordy w nowo utworzonej bazie danych za pomocą zapytania INSERT i wyświetl wstawione dane za pomocą zapytania SELECT bez klauzuli GROUP BY.

4. Teraz jesteśmy gotowi do użycia klauzuli GROUP BY w zapytaniach SQL.

Krok 1:Utwórz nową bazę danych lub użyj już utworzonej bazy danych.

Stworzyłem już bazę danych. Użyję nazwy mojej istniejącej utworzonej bazy danych, Firma.

USE Company;

Firma to nazwa bazy danych.

Ci, którzy nie utworzyli bazy danych, wykonaj poniższe zapytanie, aby utworzyć bazę danych:

CREATE DATABASE database_name;

Po utworzeniu bazy danych wybierz bazę danych, używając słowa kluczowego USE, a następnie nazwy bazy danych.

Krok 2:Utwórz nową tabelę lub użyj już istniejącej:

Stworzyłem już tabelę. Użyję istniejącej tabeli o nazwie Pracownicy.

Aby utworzyć nowe tabele, postępuj zgodnie z poniższą składnią CREATE TABLE:

CREATE TABLE table_name(

columnname1 datatype(column size),

columnname2 datatype(column size),

columnname3 datatype(column size)

);

Krok 3:wstaw rekordy do nowo utworzonej tabeli za pomocą zapytania INSERT i wyświetl rekordy za pomocą zapytania SELECT.

Użyj następującej składni, aby wstawić nowe rekordy do tabeli:

INSERT INTO table_name VALUES(value1, value2, value3);

Użyj następującej składni, aby wyświetlić rekordy z tabeli:

SELECT * FROM table_name;

Następujące zapytanie wyświetli rekordy pracowników:

SELECT * FROM Employees;

Dane wyjściowe powyższego zapytania SELECT to:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1001 VAIBHAVI MISHRA 65500 PUNE WYROCZNIA 1
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ C# 5
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
4002 ASHWINI TORBA 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI WYROCZNIA 1
5001 ARCHIT SHARMA 55500 DELHI TESTOWANIE 4
5002 KOSZULKA CHAUHAN 70000 HYDERABAD JAVA 3
5003 ROSHAN NEHTE 48500 CZANDIGAR C# 5
6001 RAHUL NIKAM 54500 BANGALORE TESTOWANIE 4
6002 ATISH JADHAV 60500 BANGALORE C# 5
6003 NIKITA INGALE 65000 HYDERABAD WYROCZNIA 1

Krok 4:Jesteśmy gotowi do użycia klauzuli GROUP BY w zapytaniach

Przyjrzymy się teraz klauzuli GROUP BY za pomocą przykładów

Przykład 1: Napisz zapytanie, aby wyświetlić rekordy pracowników pogrupowane według miasta.

SELECT * FROM EMPLOYEES GROUP BY CITY;

Powyższe zapytanie wyświetla rekordy pracowników, w których pracownik z tego samego miasta będzie uważany za jedną grupę. Na przykład, jeśli w tabeli znajduje się 10 rekordów pracowników, gdzie 3 pochodzą z miasta Pune, 3 z Bombaju, 2 z Hyderabadu i Bangalore, to powyższe zapytanie zgrupuje pracownika miasta Pune Pracownik miasta Bombaju jako jeden rekord i tak dalej .

Wynik powyższego zapytania:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
6001 RAHUL NIKAM 54500 BANGALORE TESTOWANIE 4
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
4003 RUCHIKA AGARWAL 60000 DELHI WYROCZNIA 1
5002 KOSZULKA CHAUHAN 70000 HYDERABAD JAVA 3
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ C# 5
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
1001 VAIBHAVI MISHRA 65500 PUNE WYROCZNIA 1

Jak widać, rekordy pracowników są pogrupowane według miasta, a domyślnie rekordy są wyświetlane w kolejności rosnącej.

Przykład 2: Napisz zapytanie, aby wyświetlić grupę rekordów pracowników według wynagrodzenia w porządku malejącym.

SELECT * FROM EMPLOYEES GROUP BY SALARY DESC; 

Powyższe zapytanie wyświetla rekordy pracowników, w których pracownicy z tym samym wynagrodzeniem będą uważani za jedną grupę, a rekordy będą wyświetlane w kolejności malejącej.

Wyniki powyższego zapytania:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
5002 KOSZULKA CHAUHAN 70000 HYDERABAD JAVA 3
1001 VAIBHAVI MISHRA 65500 PUNE WYROCZNIA 1
6003 NIKITA INGALE 65000 HYDERABAD WYROCZNIA 1
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
4002 ASHWINI TORBA 54500 NOIDA JAVA 3
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ C# 5
5003 ROSHAN NEHTE 48500 CZANDIGAR C# 5

Jak widzimy, rekordy pracowników są pogrupowane według wynagrodzenia, a rekordy są wyświetlane w kolejności malejącej, o czym wspominamy na końcu.

Przykład 3: Napisz zapytanie, aby wyświetlić grupę rekordów pracowników według wynagrodzenia i miasta.

SELECT * FROM EMPLOYEES GROUP BY SALARY, CITY;

Powyższe zapytanie wyświetla rekordy pracowników, w których pracownicy z tym samym wynagrodzeniem i miastem będą uważani za jedną grupę.

Załóżmy na przykład, że tabela zawiera 10 rekordów pracowników. Od 10 pracowników wynagrodzenie 2 pracowników i dopasowanie miasta z pozostałymi dwoma pracownikami i reszta wynagrodzenia sześciu pracowników i miasto jest niezrównane, wówczas 6 pracowników zostanie uznanych za 6 oddzielnych grup, a 2 pracowników, którzy pasują do pozostałych 2 pracowników, będzie uważanych za jedną grupę . W skrócie zostanie utworzonych 8 grup.

Wyniki powyższego zapytania:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
5003 ROSHAN NEHTE 48500 CZANDIGAR C# 5
2003 RUCHIKA JAIN 50000 MUMBAJ C# 5
1003 NIKHIL VANI 50500 JAIPUR FMW 2
6001 RAHUL NIKAM 54500 BANGALORE TESTOWANIE 4
4002 ASHWINI TORBA 54500 NOIDA JAVA 3
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
5001 ARCHIT SHARMA 55500 DELHI TESTOWANIE 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI WYROCZNIA 1
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
6003 NIKITA INGALE 65000 HYDERABAD WYROCZNIA 1
1001 VAIBHAVI MISHRA 65500 PUNE WYROCZNIA 1
5002 KOSZULKA CHAUHAN 70000 HYDERABAD JAVA 3

Jak widać, rekordy pracowników są pogrupowane według wynagrodzenia i miasta, a domyślnie rekordy wyświetlane są w kolejności rosnącej.

Przykład 4: Napisz zapytanie, aby wyświetlić rekordy pracowników według miasta i działu.

SELECT * FROM EMPLOYEES GROUP BY CITY, DEPARTMENT;

Powyższe zapytanie wyświetla rekordy pracowników, w których pracownicy znajdują się w tym samym mieście, a dział zostanie uznany za jedną grupę.

Wyniki powyższego zapytania:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
6002 ATISH JADHAV 60500 BANGALORE C# 5
6001 RAHUL NIKAM 54500 BANGALORE TESTOWANIE 4
5003 ROSHAN NEHTE 48500 CZANDIGAR C# 5
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
4003 RUCHIKA AGARWAL 60000 DELHI WYROCZNIA 1
5001 ARCHIT SHARMA 55500 DELHI TESTOWANIE 4
5002 KOSZULKA CHAUHAN 70000 HYDERABAD JAVA 3
6003 NIKITA INGALE 65000 HYDERABAD WYROCZNIA 1
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ C# 5
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
4002 ASHWINI TORBA 54500 NOIDA JAVA 3
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
1001 VAIBHAVI MISHRA 65500 PUNE WYROCZNIA 1

Jak widać, rekordy pracowników są pogrupowane według miasta i działu, a rekordy są domyślnie wyświetlane w kolejności rosnącej.

Przykład 5: Napisz zapytanie, aby policzyć listę pracowników w każdym dziale z tabeli pracowników.

SELECT DEPARTMENT, COUNT(DEPARTMENT) FROM EMPLOYEES GROUP BY DEPARTMENT;

Powyższe zapytanie wyświetla liczbę pracowników w każdej grupie działów według działu. Podobnie jak sześciu pracowników pracuje w dziale HR, pięciu pracuje w innym dziale.

Wyniki powyższego zapytania:

DZIAŁ LICZBA (DZIAŁ)
C# 4
FMW 3
JAVA 4
WYROCZNIA 4
TESTOWANIE 3

Jak widać, czterech pracowników pracuje w Dziale C#, trzech w Dziale FMW itd.

Przykład 6: Napisz zapytanie, aby policzyć listę pracowników z każdego miasta z tabeli pracowników.

SELECT CITY, COUNT(CITY) FROM EMPLOYEES GROUP BY CITY;

Powyższe zapytanie wyświetla liczbę pracowników w każdej grupie miast według miasta. Na przykład trzech pracowników pracuje z miasta Pune, czterech z innego miasta i tak dalej.

Wynik powyższego zapytania:

MIASTO LICZBA(MIASTO)
BANGALUR 2
CZANDIGAR 2
DELHI 2
HYDERABAD 2
JAIPUR 2
MUMBAJ 3
NOIDA 2
PUNE 3

Jak widzimy, dwóch pracowników pracuje z miasta Bangalore, trzech pracowników z miasta Bombaju i tak dalej.

Przykład 7: Napisz zapytanie, aby zsumować grupę wynagrodzeń pracowników według miasta.

SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY;

Powyższe służy do sumowania wynagrodzeń pracowników pogrupowanych według nazwy miasta. Na przykład dla pracowników z tego samego miasta ich wynagrodzenie będzie sumą i będzie traktowane jako jedna grupa. Do dodania wynagrodzenia użyliśmy funkcji sumy zbiorczej, a następnie kolumny wynagrodzenia.

Wyniki powyższego zapytania:

MIASTO WYNAGRODZENIE
BANGALUR 115000
CZANDIGAR 104000
DELHI 115500
HYDERABAD 135000
JAIPUR 101000
MUMBAJ 169000
NOIDA 114500
PUNE 186500

Jak widać, pensja w mieście Bangalore wynosi 115000, pensja w mieście Chandigarh to 104000, co stanowi dodanie innej pensji pracownika, ale z miasta stosuje się to samo podejście dla każdego miasta.

Przykład 8: Napisz zapytanie, aby znaleźć minimalną pensję z każdego działu.

SELECT DEPARTMENT, MIN(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;

Powyższe zapytanie służy do znalezienia minimalnego wynagrodzenia pracownika z każdego działu. Pensja jednego z pracowników działu Java to 54500, czyli najniższa w całym dziale Java. To samo 48500 to najniższa pensja wypłacana pracownikowi w dziale C#.

Wyniki powyższego zapytania:

DZIAŁ MIN(WYNAGRODZENIE)
C# 48500
FMW 50500
JAVA 54500
WYROCZNIA 55500
TESTOWANIE 54500

Jak widzimy, 50500 to najniższa pensja wypłacana jednemu z pracowników działu FMW, 55500 to najniższa pensja wypłacana jednemu z pracowników działu ORACLE.

Przykład 9: Napisz zapytanie, aby znaleźć minimalną pensję z każdego miasta.

SELECT CITY, MAX(SALARY) FROM EMPLOYEES GROUP BY CITY;

Powyższe zapytanie służy do znalezienia maksymalnej pensji z każdego miasta. Pensja jednego z pracowników miasta Pune wynosi 65500, co jest najwyższą pensją w całym mieście Pune, tak samo 60500 to najwyższa pensja wypłacana pracownikowi w mieście Bombaj.

Wynik powyższego zapytania:

MIASTO MAKS(WYNAGRODZENIE)
BANGALUR 60500
CZANDIGAR 55500
DELHI 60000
HYDERABAD 70000
JAIPUR 50500
MUMBAJ 60500
NOIDA 60000
PUNE 65500

Jak widzimy, 50500 to najwyższa pensja wypłacana jednemu z pracowników w mieście Jaipur, 55500 to najwyższa pensja wypłacana jednemu z pracowników w mieście Chandigarh.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Testowanie warstwy ODBC

  2. Jak skopiować dane z jednej tabeli do drugiej w SQL?

  3. Dostrajanie wydajności w Azure SQL Database

  4. Błędy, pułapki i najlepsze praktyki T-SQL – funkcje okien

  5. Nie twórz na ślepo tych brakujących indeksów!