sql >> Databasteknik >  >> RDS >> Oracle

GROUP BY utan aggregatfunktion

Det är så GROUP BY fungerar. Det tar flera rader och förvandlar dem till en rad. På grund av detta måste den veta vad den ska göra med alla kombinerade rader där det har olika värden för vissa kolumner (fält). Det är därför du har två alternativ för varje fält du vill VÄLJA :Inkludera det antingen i GROUP BY-satsen eller använd det i en sammanställningsfunktion så att systemet vet hur du vill kombinera fältet.

Låt oss till exempel säga att du har den här tabellen:

Name | OrderNumber
------------------
John | 1
John | 2

Om du säger GROUP BY Name, hur kommer det att veta vilket OrderNumber som ska visas i resultatet? Så du inkluderar antingen OrderNumber i grupp efter, vilket kommer att resultera i dessa två rader. Eller så använder du en aggregatfunktion för att visa hur man hanterar ordernumren. Till exempel MAX(OrderNumber) , vilket betyder att resultatet är John | 2 eller SUM(OrderNumber) vilket betyder att resultatet är John | 3 .



  1. Ta bort poster från en postgresql-fjärrdatabas med hjälp av lokalt tillhandahållen lista

  2. DBTIMEZONE-funktion i Oracle

  3. Hur väljer man bara de första raderna för varje unikt värde i en kolumn?

  4. Två kolumner i underfrågan i where-satsen