Odpowiedzi:
ORDER BY zmienia kolejność zwracanych produktów.
GROUP BY agreguje rekordy według określonych kolumn, co umożliwia wykonywanie funkcji agregacji na kolumnach niezgrupowanych (takich jak SUMA, LICZNIK, ŚREDNIA itp.).
ORDER BY zmienia kolejność zwracanych produktów.
GROUP BY agreguje rekordy według określonych kolumn, co umożliwia wykonywanie funkcji agregacji na kolumnach niezgrupowanych (takich jak SUMA, LICZNIK, ŚREDNIA itp.).
TABLE:
ID NAME
1 Peter
2 John
3 Greg
4 Peter
SELECT *
FROM TABLE
ORDER BY NAME
=
3 Greg
2 John
1 Peter
4 Peter
SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME
=
1 Greg
1 John
2 Peter
SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1
=
Peter
age
kolumnę z Petersem w różnym wieku i zapytaniem SELECT NAME, AGE FROM TABLE GROUP BY NAME?
ORDER BY: sortuj dane w kolejności rosnącej lub malejącej.
Rozważ tabelę CUSTOMERS :
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Oto przykład, który posortowałby wynik w kolejności rosnącej według NAZWA:
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
Dałoby to następujący wynik:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
GROUP BY: uporządkuj identyczne dane w grupy.
Teraz tabela CUSTOMERS zawiera następujące rekordy ze zduplikowanymi nazwami:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
jeśli chcesz zgrupować identyczne nazwy w jedną nazwę, zapytanie GROUP BY wyglądałoby następująco:
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
Dałoby to następujący wynik: (dla identycznych nazw wybierze ostatnią i ostatecznie posortuje kolumnę w porządku rosnącym)
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
+----+----------+-----+-----------+----------+
jak można wywnioskować, że nie jest to przydatne bez funkcji SQL, takich jak suma, średnia itp.
zapoznaj się więc z tą definicją, aby zrozumieć, jak należy używać funkcji GROUP BY:
Klauzula GROUP BY działa na wierszach zwracanych przez zapytanie, sumując identyczne wiersze w jedną / odrębną grupę i zwraca jeden wiersz z podsumowaniem dla każdej grupy, używając odpowiedniej funkcji agregującej z listy SELECT, takiej jak COUNT (), SUM (), MIN (), MAX (), AVG () itp.
Teraz, jeśli chcesz poznać całkowitą kwotę wynagrodzenia każdego klienta (imię i nazwisko), zapytanie GROUP BY wyglądałoby następująco:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Dałoby to następujący wynik: (suma wynagrodzeń o identycznych nazwiskach i sortowanie kolumny NAZWA po usunięciu identycznych nazwisk)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
Różnica jest dokładnie tym, co sugeruje nazwa: grupa wykonuje operację grupowania i porządek według sortowania.
Jeśli to zrobisz SELECT * FROM Customers ORDER BY Name
, otrzymasz listę wyników posortowaną według nazw klientów.
Jeśli tak SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
, otrzymasz liczbę aktywnych i nieaktywnych klientów. Grupa według zagregowanych wyników na podstawie określonego pola.
Mają zupełnie inne znaczenie i wcale nie są ze sobą powiązane.
ORDER BY umożliwia sortowanie zestawu wyników według różnych kryteriów, takich jak najpierw sortowanie według nazwy od z, a następnie sortowanie według ceny od najwyższej do najniższej.
(ZAMÓW WEDŁUG nazwy, cena DESC)
GROUP BY umożliwia pobranie zestawu wyników, pogrupowanie go w logiczne grupy, a następnie uruchomienie zagregowanych zapytań dotyczących tych grup. Można na przykład wybrać wszystkich pracowników, pogrupować ich według lokalizacji miejsca pracy i obliczyć średnie wynagrodzenie wszystkich pracowników w każdym miejscu pracy.
Proste, ORDER BY
porządkuje dane i GROUP BY
grupy lub łączy dane.
ORDER BY
porządkuje zestaw wyników zgodnie ze wspomnianym polem, domyślnie w kolejności rosnącej.
Załóżmy, że uruchamiasz zapytanie ORDER BY (student_roll_number)
, ponieważ pokaże ono wynik w rosnącej kolejności numerów rolek uczniów. Tutaj student_roll_number
wpis może nastąpić więcej niż raz.
W GROUP BY
przypadku, gdy używamy tego z funkcjami agregującymi i grupuje dane zgodnie z funkcją agregującą, a otrzymujemy wynik. Tutaj, jeśli nasze zapytanie ma SUM (marks)
razem ze sobą GROUP BY (student_first_name)
, pokaże sumę ocen uczniów należących do każdej grupy (gdzie wszyscy członkowie grupy będą mieli to samo imię).
GROUP BY służy do grupowania wierszy w selekcji, zwykle podczas agregowania wierszy (np. Obliczanie sum, średnich itp. Dla zestawu wierszy o tych samych wartościach dla niektórych pól).
ORDER BY służy do porządkowania wierszy wynikających z instrukcji select.
Kilka dobrych przykładów. Podobnie jak dodawanie własnego z arkusza internetowego, który daje dobre jasne przykłady, a także pozwala na wykonanie własnego SQL.
ORDER BY
pokazuje pole w porządku rosnącym lub malejącym. Podczas gdy GROUP BY
pokazuje te same nazwy pól, identyfikatory itp. W tylko jednym wyjściu.
Należy zauważyć, że GROUP BY
nie zawsze jest to konieczne, ponieważ (przynajmniej w PostgreSQL i prawdopodobnie w innych wariantach SQL) możesz używać ORDER BY
z listą i nadal możesz używać ASC
lub DESC
na kolumnę ...
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;