MySQL GROUP BY (Svenska)

sammanfattning: i den här handledningen lär du dig hur du använder MySQL GROUP BY för att gruppera rader i undergrupper baserat på värden på kolumner eller uttryck.

introduktion till MySQL GROUP BY klausul

klausulenGROUP BY grupperar en uppsättning rader i en uppsättning sammanfattningsrader med värden av kolumner eller uttryck. KlausulenGROUP BY returnerar en rad för varje grupp. Med andra ord minskar antalet rader i resultatuppsättningen.,

du använder ofta klausulen GROUP BY med aggregerade funktioner som SUM, AVG, MAX, MIN och COUNT, COUNT. Den aggregerade funktionen som visas i klausulenSELECT ger information om varje grupp.

GROUP BY – klausulen är en valfri klausul iSELECT – satsen., Följande illustrerar klausulenGROUP BY:

klausulen GROUP BY måste visas efter klausulerna FROM och WHERE. Efter nyckelordenGROUP BY är en lista med kommaseparerade kolumner eller uttryck som du vill använda som kriterier för att gruppera rader.,

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) enkel MySQL-grupp genom exempel

Låt oss ta en titt på tabellenorders I provdatabasen.,

anta att du vill gruppera värden för orderns status i undergrupper, använder du klausulenGROUP BY med kolumnenstatus som följande fråga:

GROUP BY

Code language: SQL (Structured Query Language) (sql)

prova det

som du kan se returnerar klausulenGROUP BY unika händelser i status värden., Det fungerar som DISTINCT – operatören som visas i följande fråga:

Code language: SQL (Structured Query Language) (sql)

prova det

B) använda MySQL-gruppen med aggregerade funktioner

de aggregerade funktionerna gör att du kan utföra beräkningen av en uppsättning rader och returnera ett enda värde. KlausulenGROUP BY används ofta med en aggregerad funktion för att utföra beräkning och returnera ett enda värde för varje undergrupp.,

om du till exempel vill veta antalet order i varje status kan du använda COUNT – funktionen med GROUP BY – klausulen enligt följande:

Code language: SQL (Structured Query Language) (sql)

prova det

se följande tabell orders och orderdetails.,

för att få den totala mängden av alla beställningar efter status, går du med i tabellen orders med tabellen orderdetails och använder tabellen SUM – funktionen för att beräkna det totala beloppet. Se följande fråga:

Code language: SQL (Structured Query Language) (sql)

prova det

På samma sätt returnerar följande fråga ordernumren och det totala beloppet för varje order.,

Code language: SQL (Structured Query Language) (sql)

prova det

C) MySQL grupp med uttrycksexempel

förutom kolumner kan du gruppera rader med uttryck. Följande fråga får den totala försäljningen för varje år.

prova det

i det här exemplet använde vi funktionenYEAR för att extrahera årdata från orderdatum (orderDate)., Vi inkluderade endast order med shipped status i den totala försäljningen. Observera att uttrycket som visas i SELECT – klausulen måste vara detsamma som uttrycket i GROUP BY – klausulen.

d) med hjälp av MySQL GROUP genom att ha klausul exempel

för att filtrera de grupper som returneras avGROUP BYklausul, du använder enHAVING klausul. Följande fråga använder klausulen HAVING för att välja den totala försäljningen för åren efter 2003.,

Code language: SQL (Structured Query Language) (sql)

prova det

gruppen efter klausul: MySQL vs standard SQL

standard SQL tillåter dig inte att använda ett alias iGROUP BY – klausulen stöder dock MySQL detta.

till exempel extraherar följande fråga året från orderdatumet. Den använder förstyear som ett alias för uttrycketYEAR(orderDate) och använder sedanyear alias iGROUP BY – klausulen., Denna fråga är inte giltig i standard SQL.

prova det

MySQL låter dig också sortera grupperna i stigande eller fallande order medan standard SQL inte gör det. Standardordningen stiger., Om du till exempel vill få antalet order efter status och sortera statusen i fallande ordning kan du använda GROUP BY – klausulen med DESC som följande fråga:

Code language: SQL (Structured Query Language) (sql)

prova det

Observera att vi användeDESCIGROUP BYför att sorterastatus I fallande ordning., Vi kan också uttryckligen ange ASC I GROUP BY – klausulen för att sortera grupperna efter status i stigande ordning.

i den här handledningen har vi visat dig hur du använder MySQLGROUP BY – klausulen för att gruppera rader i undergrupper baserat på värden för kolumner eller uttryck.

  • var den här handledningen till hjälp?
  • YesNo

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Hoppa till verktygsfältet