logo

GRUPUJ WEDŁUG a ZAMÓW WG

W tym artykule wyjaśniono pełny przegląd klauzul GROUP BY i ORDER BY. Służą głównie do porządkowania danych uzyskanych w wyniku zapytań SQL. Różnica między tymi klauzulami jest jednym z najczęstszych miejsc, w których utkniesz podczas nauki SQL-a . Główna różnica między nimi polega na tym klauzula GROUP BY ma zastosowanie, gdy chcemy użyć funkcji agregujących do więcej niż jednego zestawu wierszy. Klauzula ORDER BY ma zastosowanie, gdy chcemy otrzymać dane uzyskane w zapytaniu w kolejności sortowania . Przed dokonaniem porównania najpierw poznamy te klauzule SQL.

GRUPUJ WEDŁUG a ZAMÓW WG

ZAMÓW PRZEZ klauzulę

Klauzula ORDER BY jest używana w zapytaniach SQL do sortowania danych zwracanych przez zapytanie w kolejności rosnącej lub malejącej. Jeśli pominiemy kolejność sortowania, podsumowany wynik domyślnie posortuje w kolejności rosnącej. Klauzula ORDER BY, podobnie jak klauzula GROUP BY, może być używana w połączeniu z instrukcją SELECT. ASC oznacza porządek rosnący, podczas gdy OPIS oznacza porządek malejący.

Poniżej przedstawiono składnię klauzuli ORDER BY w instrukcji SQL:

eksport gimp jako jpg
 SELECT expressions FROM tables [WHERE conditions] ORDER BY expression [ ASC | DESC ]; 

Przyjrzyjmy się działaniu klauzuli ORDER BY na poniższym przykładzie. Załóżmy, że mamy stół deweloper który zawiera następujące dane:

GRUPUJ WEDŁUG a ZAMÓW WG

Widzimy, że wyniki te nie są wyświetlane w zorganizowany sposób. Załóżmy, że chcemy uporządkować wyniki w kolejności rosnącej lub malejącej na podstawie kolumna stanu . W takim przypadku potrzebowalibyśmy polecenia ORDER BY, aby uzyskać pożądany wynik. Możemy to zrobić wykonując następujące polecenie:

 mysql> SELECT D_name, D_state, D_salary FROM developers ORDER BY D_state ASC; 

Oto dane wyjściowe, w których uzyskamy pożądane wyniki:

GRUPUJ WEDŁUG a ZAMÓW WG

GRUPUJ WEDŁUG klauzuli

Klauzula GROUP BY jest używana w zapytaniach SQL do organizowania danych mających te same wartości atrybutów. Zwykle używamy go z instrukcją SELECT. Zawsze należy pamiętać, że po klauzuli WHERE musimy umieścić klauzulę GROUP BY. Dodatkowo jest on przewijany przed klauzulą ​​ORDER BY.

Często możemy używać tej klauzuli we współpracy z funkcjami agregującymi, takimi jak SUM, AVG, MIN, MAX i COUNT, aby tworzyć raporty podsumowujące z bazy danych. Należy pamiętać, że atrybut w tej klauzuli musi występować w klauzuli SELECT, a nie pod funkcją agregującą. Jeśli to zrobimy, zapytanie będzie nieprawidłowe. W rezultacie klauzula GROUP BY jest zawsze używana w połączeniu z klauzulą ​​SELECT. Zapytanie dla klauzuli GROUP BY jest zapytaniem grupowanym i zwraca pojedynczy wiersz dla każdego zgrupowanego obiektu.

wizualizator Java

Poniżej przedstawiono składnię klauzuli GROUP BY w instrukcji SQL:

 SELECT column_name, function(column_name) FROM table_name WHERE condition GROUP BY column_name; 

Przyjrzyjmy się bliżej działaniu klauzuli GROUP BY na przykładzie. Tutaj zademonstrujemy to za pomocą tej samej tabeli.

Załóżmy, że chcemy wiedzieć średnie wynagrodzenie dewelopera w danym stanie i uporządkuj wyniki w kolejności malejącej w oparciu o kolumnę stanu. W takim przypadku potrzebowalibyśmy zarówno polecenia GROUP BY, jak i ORDER BY, aby uzyskać pożądany wynik. Możemy to zrobić wykonując następujące polecenie:

 mysql> SELECT D_state, avg(D_salary) AS salary FROM developers GROUP BY D_state ORDER BY D_state DESC; 

To zapytanie początkowo utworzyło wynik pośredni, który pogrupował stan. Następny, ŚREDNIA funkcja jest wykonywana na każdej grupie stanów, następnie posortuj wynik w kolejności malejącej, a na koniec otrzymamy pożądane wyniki, jak pokazano poniżej:

GRUPUJ WEDŁUG a ZAMÓW WG

Kluczowe różnice między GROUP BY i ORDER BY

Poniżej przedstawiono najważniejsze różnice pomiędzy klauzulami Group By i Order By:

  • Klauzula Group By służy do grupowania danych na podstawie tej samej wartości w określonej kolumnie. Klauzula ORDER BY natomiast sortuje wynik i wyświetla go w kolejności rosnącej lub malejącej.
  • Aby skorzystać z opcji Grupuj według, konieczne jest użycie funkcji agregującej. Z drugiej strony użycie funkcji agregującej nie jest obowiązkowe w celu użycia opcji Sortuj według.
  • Atrybut nie może znajdować się w instrukcji GROUP BY w ramach funkcji agregującej, natomiast atrybut może znajdować się w instrukcji ORDER BY w ramach funkcji agregującej.
  • Klauzula Group By steruje prezentacją krotek, co oznacza, że ​​grupowanie odbywa się na podstawie podobieństwa wartości atrybutów wiersza. Natomiast klauzula ORDER BY steruje prezentacją kolumn, co oznacza, że ​​porządkowanie lub sortowanie odbywa się na podstawie wartości atrybutów kolumny w kolejności rosnącej lub malejącej.
  • GROUP BY jest zawsze umieszczane po klauzuli WHERE, ale przed instrukcją ORDER BY. Z drugiej strony ORDER BY jest zawsze używane po instrukcji GROUP BY.

Tabela porównawcza GROUP BY vs. ORDER BY

Poniższa tabela porównawcza wyjaśnia w szybki sposób ich główne różnice:

SN GRUPUJ WEDŁUG ZAMÓW PRZEZ
1. Służy do grupowania wierszy o tych samych wartościach. Sortuje zestaw wyników w kolejności rosnącej lub malejącej.
2. Może być to dozwolone w instrukcji CREATE VIEW. Nie jest to dozwolone w instrukcji CREATE VIEW
3. Kontroluje prezentację wierszy. Kontroluje prezentację kolumn.
4. Atrybut nie może znajdować się w funkcji agregującej w instrukcji GROUP BY. Atrybut może znajdować się w funkcji agregującej w instrukcji ORDER BY.
5. Jest on zawsze używany przed klauzulą ​​ORDER BY w instrukcji SELECT. Jest zawsze używany po klauzuli GROUP BY w instrukcji SELECT.
6. Obowiązkowe jest użycie funkcji agregujących w GROUP BY. Używanie funkcji agregujących w ORDER BY nie jest obowiązkowe.
7. W tym przypadku grupowanie odbywa się na podstawie podobieństwa wartości atrybutów wiersza. W tym przypadku zestaw wyników jest sortowany na podstawie wartości atrybutów kolumny, w kolejności rosnącej lub malejącej.

Wniosek

W tym artykule porównano klauzule GROUP BY i ORDER BY. Obie klauzule są niezwykle przydatnymi funkcjami bazy danych SQL. Gdy chcemy utworzyć grupę wierszy, używamy klauzuli GROUP BY. Jeśli chcemy uporządkować dane w kolejności rosnącej lub malejącej na podstawie konkretnej kolumny, używamy klauzuli ORDER BY. Nie mają ze sobą żadnego związku, ponieważ oba są wykorzystywane do dwóch różnych celów. Możemy je jednak połączyć, aby służyły jakiemuś specjalnemu celowi lub wykorzystać je indywidualnie, w zależności od okoliczności. Klauzul tych możemy używać tylko z instrukcją SELECT.

pomysł inteligentny kontra zaćmienie