Rozumiem sens GROUP BY x
Ale jak
GROUP BY x, y
działa i co to znaczy?
Rozumiem sens GROUP BY x
Ale jak
GROUP BY x, y
działa i co to znaczy?
Odpowiedzi:
Group By X
oznacza umieszczenie wszystkich z tą samą wartością X w jednej grupie .
Group By X, Y
oznacza umieszczenie wszystkich tych samych wartości dla X i Y w jednej grupie .
Aby zilustrować to na przykładzie, załóżmy, że mamy następującą tabelę dotyczącą tego, kto studiuje dany przedmiot na uniwersytecie:
Table: Subject_Selection
Subject Semester Attendee
---------------------------------
ITB001 1 John
ITB001 1 Bob
ITB001 1 Mickey
ITB001 2 Jenny
ITB001 2 James
MKB114 1 John
MKB114 1 Erica
Gdy używasz tylko group by
w kolumnie tematu; mówić:
select Subject, Count(*)
from Subject_Selection
group by Subject
Otrzymasz coś takiego:
Subject Count
------------------------------
ITB001 5
MKB114 2
... ponieważ jest 5 pozycji dla ITB001 i 2 dla MKB114
Gdybyśmy byli w group by
dwóch kolumnach:
select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester
otrzymalibyśmy to:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
Wynika to z tego, że kiedy grupujemy według dwóch kolumn, mówi się: „Grupuj je, aby wszystkie osoby z tym samym przedmiotem i semestrem znajdowały się w tej samej grupie, a następnie oblicz wszystkie funkcje agregujące (liczba, suma, średnia itp.). ) dla każdej z tych grup ” . W tym przykładzie pokazuje to fakt, że kiedy je policzymy, trzy osoby wykonują ITB001 w semestrze 1, a dwie robią to w semestrze 2. Obie osoby wykonujące MKB114 są w semestrze 1, więc nie ma wiersz dla semestru 2 (brak danych pasuje do grupy „MKB114, semestr 2”)
Mam nadzieję, że to ma sens.
GROUP BY A,B
to samo co GROUP BY B,A
?
GROUP BY a, b
a GROUP BY a AND b
ponieważ druga zawiera tylko zgrupowane elementy o dokładnie takiej samej treści i bez „podgrup”. W takim przypadku wynik będzie taki sam jak pierwszy.
GROUP BY
Klauzula jest stosowana w połączeniu z funkcjami kruszywa do grupy wynikiem skonfigurowany przez jedną lub więcej kolumn. na przykład:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
Zapamiętaj to zamówienie:
1) WYBIERZ (służy do wybierania danych z bazy danych)
2) OD (klauzula służy do wyświetlania tabel)
3) GDZIE (klauzula służy do filtrowania rekordów)
4) GROUP BY (klauzula może być używana w instrukcji SELECT do gromadzenia danych w wielu rekordach i grupowania wyników według jednej lub więcej kolumn)
5) HAVING (klauzula jest używana w połączeniu z klauzulą GROUP BY, aby ograniczyć grupy zwracanych wierszy tylko do tych, których warunek jest PRAWDA)
6) ORDER BY (słowo kluczowe służy do sortowania zestawu wyników)
Możesz użyć ich wszystkich, jeśli używasz funkcji agregujących, i to jest kolejność, w jakiej muszą być ustawione, w przeciwnym razie możesz otrzymać błąd.
Funkcje agregujące to:
MIN zwraca najmniejszą wartość w danej kolumnie
SUMA zwraca sumę wartości liczbowych w danej kolumnie
AVG zwraca średnią wartość z danej kolumny
COUNT zwraca całkowitą liczbę wartości w danej kolumnie
COUNT (*) zwraca liczbę wierszy w tabeli