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

GROUP BY vs ORDER BY

Klauzule GROUP BY i ORDER BY w SQL służą do porządkowania danych uzyskanych przez zapytania SQL. Ważną różnicą między klauzulą ​​GROUP BY a klauzulą ​​ORDER BY jest to, że klauzula GROUP BY jest stosowana, gdy chcemy użyć funkcji agregującej w zapytaniu SQL w więcej niż jednym zestawie wierszy. Natomiast klauzula ORDER BY jest stosowana, gdy chcemy otrzymać dane uzyskane przez zapytanie w posortowanej kolejności. Zanim przejdziemy do wykresów porównawczych, najpierw zrozumiemy te klauzule SQL.

GRUPA WEDŁUG klauzuli

Instrukcja GROUP BY w SQL używa zapytań do porządkowania danych w obrębie wartości atrybutów. Zwykle używamy klauzuli GROUP BY z instrukcją SELECT. Klauzule GROUP BY musimy zawsze umieszczać po klauzuli WHERE. Dodatkowo jest również umieszczany przed klauzulą ​​ORDER BY.

Często możemy użyć klauzuli GROUP BY z funkcjami agregującymi, takimi jak SUM, AVG, MIN, MAX i COUNT, aby uzyskać dane wyjściowe z bazy danych. Zapytanie dla klauzuli GROUP BY jest zapytaniem grupowym i zwraca jeden wiersz dla każdego zgrupowanego obiektu.

Poniżej znajduje się składnia do używania klauzuli GROUP BY w zapytaniu SQL

SELECT COLUMNNAME, FUNCTION(COLUMNNAME) FROM TABLENAME WHERE CONDITION GROUP BY COLUMNNAME;

Zrozummy klauzulę GROUP BY na podstawie kilku przykładów. Rozważ poniższe tabele wraz z podanymi rekordami.

Tabela:Pracownicy

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY ROBOCZE_GODZINY PŁEĆ
1001 VAIBHAVI MISHRA 65000 PUNE WYROCZNIA 1 12 F
1002 VAIBHAV SHARMA 60000 NOIDA WYROCZNIA 1 9 M
1003 NIKHIL VANI 50000 JAIPUR FMW 2 10 M
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1 10 F
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2 12 M
2003 RUCHIKA JAIN 50000 MUMBAJ TESTOWANIE 4 9 F
3001 PRANOTI SHENDE 55500 PUNE JAVA 3 9 F
3002 ANUJA GDZIE 50500 JAIPUR FMW 2 9 F
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3 12 M
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4 10 M

Przykład 1: Załóżmy, że dla powyższych danych chcemy poznać sumę wynagrodzeń pracowników w danym mieście. W tym celu wykonamy poniższe zapytanie w następujący sposób:

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

To zapytanie początkowo utworzyło wynik, który pogrupował miasto. Następnie SUM funkcja jest wykonywana na każdej grupie miast, a na koniec otrzymamy pożądane wyniki, jak pokazano poniżej:

Przykład 2: Załóżmy, że dla powyższych danych chcemy poznać maksymalne wynagrodzenie pracowników w danym dziale. W tym celu wykonamy poniższe zapytanie w następujący sposób:

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

To zapytanie początkowo utworzyło wynik, który pogrupował dział. Następnie MAX funkcja jest wykonywana na każdej grupie działu, a na koniec otrzymamy pożądane wyniki, jak pokazano poniżej:

klauzula ZAMÓW WEDŁUG

Klauzula GROUP BY i klauzula ORDER BY mogą być używane z instrukcją SELECT. W zapytaniach SQL użyliśmy klauzuli ORDER BY, aby posortować rekordy zwrócone przez zapytanie w kolejności rosnącej lub malejącej. Gdybyśmy nie wspomnieli o kolejności sortowania, cały wynik byłby domyślnie posortowany w kolejności rosnącej.

Poniżej znajduje się składnia użycia klauzuli ORDER BY w zapytaniu SQL

SELECT * FROM TABLENAME ORDER BY [ASC | DESC];

Zrozummy klauzulę ORDER BY za pomocą kilku przykładów. Rozważ poniższe tabele wraz z podanymi rekordami.

Tabela:Pracownicy

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY ROBOCZE_GODZINY PŁEĆ
1001 VAIBHAVI MISHRA 65000 PUNE WYROCZNIA 1 12 F
1002 VAIBHAV SHARMA 60000 NOIDA WYROCZNIA 1 9 M
1003 NIKHIL VANI 50000 JAIPUR FMW 2 10 M
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1 10 F
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2 12 M
2003 RUCHIKA JAIN 50000 MUMBAJ TESTOWANIE 4 9 F
3001 PRANOTI SHENDE 55500 PUNE JAVA 3 9 F
3002 ANUJA GDZIE 50500 JAIPUR FMW 2 9 F
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3 12 M
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4 10 M

Przykład 1: Załóżmy, że chcemy uporządkować wynik w kolejności posortowanej, rosnącej lub malejącej, na podstawie kolumny z imieniem. W takim przypadku chcielibyśmy użyć klauzuli ORDER BY, aby uzyskać wynik. W tym celu wykonamy poniższe zapytanie w następujący sposób:

SELECT * FROM EMPLOYEES ORDER BY FIRST_NAME ASC;

Kluczowa różnica między GROUP BY i ORDER BY

Poniżej znajdują się punkty, które odróżniają klauzule GROUP BY i ORDER BY:

  • Instrukcja GROUP BY w SQL służy do grupowania rekordów na podstawie podobnej wartości w określonej kolumnie. Z drugiej strony, klauzula ORDER BY w SQL jest używana do sortowania wyświetlanych wyników w kolejności rosnącej lub malejącej.
  • Podczas wykonywania zapytania przy użyciu klauzuli GROUP BY w zapytaniu SQL obowiązkowe jest użycie funkcji agregującej. Z drugiej strony, używając klauzuli ORDER BY w SQ, użycie funkcji agregującej nie jest obowiązkowe.
  • Klauzula GROUP BY jest zawsze umieszczana w zapytaniu SQL po klauzuli WHERE, ale przed klauzulą ​​ORDER BY. Z drugiej strony klauzula ORDER BY jest zawsze umieszczana po klauzuli GROUP BY.

Wykres porównawczy

SR.NIE GRUPUJ WG ZAMÓW PRZEZ
1 Klauzula GROUP BY służy do grupowania wierszy o podobnych wartościach. Klauzula ORDER BY służy do sortowania wyników w kolejności malejącej lub rosnącej
2 Kontroluje prezentację wierszy Kontroluje prezentację kolumn
3 Klauzula GROUP BY jest zawsze umieszczana przed klauzulą ​​ORDER BY. Klauzula ORDER BY jest zawsze umieszczana po klauzuli GROUP BY.
4 Używanie funkcji agregującej jest obowiązkowe Używanie funkcji agregującej nie jest obowiązkowe
5 Atrybut nie może znajdować się w funkcji agregującej w instrukcji GROUP BY. Atrybut może znajdować się pod funkcją agregującą w instrukcji ORDER BY.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Progi optymalizacji — grupowanie i agregowanie danych, część 3

  2. Jak używać klauzuli ORDER BY w SQL?

  3. 911/112:model danych usługi połączeń alarmowych

  4. Przechowywana procedura uzyskiwania informacji z tabel bazy danych

  5. Model danych ubezpieczenia na życie