rezumat: în acest tutorial, veți învăța cum să utilizați MySQL GROUP BY
pentru a grupa rândurile în subgrupuri pe baza valorilor coloanelor sau expresiilor.
Introducere în MySQL GROUP BY clauza
GROUP BY
clauza grupează un set de rânduri într-un set de rânduri sumare după valorile coloanelor sau expresiilor. Clauza GROUP BY
returnează un rând pentru fiecare grup. Cu alte cuvinte, reduce numărul de rânduri din setul de rezultate.,
folosiți adesea GROUP BY
clauza cu funcții agregate, cum ar fi SUM
, AVG
, MAX
, MIN
și COUNT
. Funcția agregată care apare în clauza SELECT
oferă informații despre fiecare grup.
GROUP BY
clauză este o clauză opțională de SELECT
declarație., Următoarea diagramă ilustrează GROUP BY
clauza sintaxa:
GROUP BY
clauză trebuie să apară după FROM
și WHERE
clauze. Urmând cuvintele cheie GROUP BY
este o listă de coloane sau expresii separate prin virgulă pe care doriți să le utilizați ca criterii pentru a grupa rânduri.,
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) grup MySQL simplu prin exemplu
Să aruncăm o privire la tabelul orders
din Baza de date de probă.,
să Presupunem că doriți să grup de valori de ordine de stare în subgrupuri, utilizați GROUP BY
clauza cu status
coloana ca următoarea interogare:
Code language: SQL (Structured Query Language) (sql)
Încercați să-L Afară
după Cum puteți vedea, GROUP BY
clauza de returnare unic aparițiile status
valori., Acesta funcționează ca DISTINCT
operator așa cum se arată în următoarea interogare:
Code language: SQL (Structured Query Language) (sql)
Încercați să-L Afară
B) Folosind MySQL GRUP DE cu funcții agregate
funcții agregate permite pentru a efectua calculul de un set de rânduri și se întoarce o singură valoare. Clauza GROUP BY
este adesea folosită cu o funcție agregată pentru a efectua calculul și a returna o singură valoare pentru fiecare subgrup.,
De exemplu, dacă vrei să știi numărul de comenzi în fiecare stare, puteți folosi COUNT
funcția GROUP BY
clauza după cum urmează:
Code language: SQL (Structured Query Language) (sql)
Încercați să-L Afară
a se Vedea următoarele orders
și orderdetails
masă.,
Pentru a obține suma totală a tuturor comenzilor de stare, alăturați-vă orders
tabel cu orderdetails
masă și de a folosi SUM
funcție pentru a calcula suma totală. Vezi următoarea interogare:
Code language: SQL (Structured Query Language) (sql)
Încercați să-L Afară
în mod Similar, următoarea interogare returnează numerele de ordine și valoarea totală a fiecărui ordin.,
Code language: SQL (Structured Query Language) (sql)
Încercați să-L Afară
C) MySQL GRUP DE exprimare exemplu
În plus față de coloane, puteți grup de rânduri de expresii. Următoarea interogare primește vânzările totale pentru fiecare an.
Încercați să-L Afară
În acest exemplu, am utilizat YEAR
funcția de a extrage datele din anul de la data comenzii ( orderDate
)., Am inclus doar comenzi cu shipped
status în vânzările totale. Rețineți că expresia care apare în clauza SELECT
trebuie să fie aceeași cu cea din clauza GROUP BY
.
D) Folosind MySQL GRUP DE cu AVÂND clauza de exemplu,
Pentru a filtra grupurile returnate de către GROUP BY
clauză, utilizați un HAVING
clauză. Următoarea interogare folosește clauza HAVING
pentru a selecta vânzările totale din anii de după 2003.,
Code language: SQL (Structured Query Language) (sql)
Încercați să-L Afară
clauza GROUP BY: MySQL vs standard SQL
Standard SQL nu permite să utilizați un alias în GROUP BY
clauză, cu toate acestea, MySQL suporta acest lucru.
de exemplu, următoarea interogare extrage anul de la data comenzii. Primul foloseste year
ca un alias de expresia YEAR(orderDate)
și apoi folosește year
alias-ul GROUP BY
clauză., Această interogare nu este validă în SQL standard.
Încercați să-L Afară
MySQL, de asemenea, vă permite să sortați grupuri în ordine crescătoare sau descrescătoare ordine, în timp ce standardul SQL nu. Ordinea implicită este ascendentă., De exemplu, dacă doriți să obțineți numărul de comenzi de statut și un fel de stare, în ordine descrescătoare, puteți folosi GROUP BY
clauza cu DESC
ca următoarea interogare:
Code language: SQL (Structured Query Language) (sql)
Încercați să-L Afară
Observați că am folosit DESC
în GROUP BY
clauză pentru a sorta status
în ordine descrescătoare., De asemenea, am putea specifica explicit ASC
în clauza GROUP BY
pentru a sorta grupurile după stare în ordine crescătoare.
în acest tutorial, v-am arătat cum să utilizați Clauza MySQL GROUP BY
pentru a grupa rândurile în subgrupuri pe baza valorilor coloanelor sau expresiilor.
- a fost acest tutorial util?
- YesNo