Podsumowanie: w tym samouczku dowiesz się, jak używać MySQLGROUP BY
do grupowania wierszy w podgrupy na podstawie wartości kolumn lub wyrażeń.
Wprowadzenie do grupy MySQL za pomocą klauzuli
klauzulaGROUP BY
grupuje zbiór wierszy w zestaw wierszy podsumowujących według wartości kolumn lub wyrażeń. KlauzulaGROUP BY
zwraca jeden wiersz dla każdej grupy. Innymi słowy, zmniejsza liczbę wierszy w zestawie wyników.,
często używasz klauzuli GROUP BY
Z FUNKCJAMI zbiorczymi, takimi jak SUM
, AVG
, MAX
, MIN
oraz COUNT
. Funkcja agregująca, która pojawia się w klauzuli SELECT
dostarcza informacji o każdej grupie.
GROUP BY
klauzula jest opcjonalną klauzuląSELECT
., Poniżej przedstawiono składnię klauzuli GROUP BY
:
klauzula GROUP BY
musi pojawić się po FROM
I WHERE
klauzule. Poniżej słów kluczowychGROUP BY
znajduje się lista kolumn lub wyrażeń oddzielonych przecinkami, których chcesz użyć jako kryteriów do grupowania wierszy.,
MySQL evaluates the GROUP BY
clause after the FROM
, WHERE
and SELECT
clauses and before the HAVING
, ORDER BY
and LIMIT
clauses:
MySQL GROUP BY examples
Let’s take some example of using the GROUP BY
clause.,
A) prosta Grupa MySQL na przykładzie
przyjrzyjmy się tabeliorders
w przykładowej bazie danych.,
Załóżmy, że chcesz grupować wartości statusu zamówienia w podgrupy, używasz klauzuli GROUP BY
z status
kolumna jako następujące zapytanie:
Code language: SQL (Structured Query Language) (sql)
wypróbuj to
jak widać, klauzula GROUP BY
zwraca unikalne wystąpienia status
wartości., Działa jak operator DISTINCT
jak pokazano w następującym zapytaniu:
Code language: SQL (Structured Query Language) (sql)
wypróbuj to
B) używając grupy MySQL przy użyciu funkcji agregujących
funkcje agregujące pozwalają wykonać obliczenia zestawu wierszy i zwrócić pojedynczą wartość. Klauzula GROUP BY
jest często używana z funkcją agregującą do wykonywania obliczeń i zwracania pojedynczej wartości dla każdej podgrupy.,
na przykład, jeśli chcesz poznać liczbę zamówień w każdym stanie, możesz użyć funkcji COUNT
z klauzulą GROUP BY
w następujący sposób:
Code language: SQL (Structured Query Language) (sql)
wypróbuj ją
zobacz poniższą tabelę orders
I orderdetails
.,
aby uzyskać całkowitą kwotę wszystkich zamówień według statusu, dołącz do tabeli orders
z orderdetails
table and use the SUM
function to calkowita kwota. Zobacz następujące zapytanie:
Code language: SQL (Structured Query Language) (sql)
wypróbuj je
podobnie, poniższe zapytanie zwraca numery zamówień i całkowitą kwotę każdego zamówienia.,
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
C) Grupa MySQL według wyrażenia przykład
oprócz kolumn można grupować wiersze według wyrażeń. Poniższe zapytanie pobiera całkowitą sprzedaż za każdy rok.
Wypróbuj
w tym przykładzie użyliśmy funkcji YEAR
do wyodrębnienia danych roku z daty zamówienia ( orderDate
)., Uwzględniliśmy tylko zamówienia ze statusem shipped
w całkowitej sprzedaży. Zauważ, że wyrażenie pojawiające się w klauzuli SELECT
musi być takie samo jak wyrażenie w klauzuli GROUP BY
.
D) używając MySQL GROUP BY with HAVING clause przykład
aby filtrować grupy zwrócone przez GROUP BY
klauzula, używasz HAVING
klauzula. Poniższe zapytanie wykorzystuje klauzulę HAVING
, aby wybrać całkowitą sprzedaż w latach po 2003 roku.,
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
Grupa według klauzuli: MySQL vs.standardowy SQL
standardowy SQL nie pozwala na użycie aliasu w klauzuli GROUP BY
, jednak MySQL to obsługuje.
na przykład poniższe zapytanie wyciąga rok z daty zamówienia. Najpierw używayear
jako aliasu wyrażeniaYEAR(orderDate)
, a następnie używa aliasuyear
w klauzuliGROUP BY
., To zapytanie nie jest poprawne w standardowym SQL.
Wypróbuj
MySQL pozwala również sortować grupy w kolejności rosnącej lub malejącej, podczas gdy standardowy SQL nie. Domyślna kolejność jest rosnąca., Na przykład, jeśli chcesz uzyskać liczbę zamówień według statusu i posortować stan w porządku malejącym, możesz użyć GROUP BY
klauzuli DESC
jako następującego zapytania:
Code language: SQL (Structured Query Language) (sql)
wypróbuj to
zauważ, że użyliśmy DESC
w GROUP BY
klauzuli do sortowania status
malejąco., Możemy również wyraźnie określić ASC
w klauzuli GROUP BY
, aby sortować grupy według statusu w kolejności rosnącej.
w tym samouczku pokazaliśmy, jak używać klauzuli MySQL GROUP BY
do grupowania wierszy w podgrupy na podstawie wartości kolumn lub wyrażeń.
- czy ten tutorial był pomocny?
- YesNo