Group By – klauzule (Visual Basic)
Seskupí prvky výsledku dotazu. Dá se také použít k použití agregačních funkcí pro každou skupinu. Operace seskupení je založená na jednom nebo více klíčích.
Syntaxe
Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]
Into aggregateList
Součástky
listField1
,listField2
Nepovinné. Jedno nebo více polí proměnné dotazu nebo proměnných, která explicitně identifikují pole, která mají být zahrnuta do seskupeného výsledku. Pokud nejsou zadána žádná pole, jsou všechna pole proměnné dotazu nebo proměnných zahrnuta do seskupeného výsledku.
keyExp1
Povinný: Výraz, který identifikuje klíč, který se má použít k určení skupin prvků. Můžete zadat více než jeden klíč pro zadání složeného klíče.
keyExp2
Nepovinné. Jeden nebo více dalších klíčů, které jsou kombinovány s
keyExp1
cílem vytvořit složený klíč.aggregateList
Povinný: Jeden nebo více výrazů, které identifikují agregaci skupin. Pokud chcete identifikovat název člena pro seskupené výsledky, použijte
Group
klíčové slovo, které může být v některé z následujících formulářů:Into Group
nebo
Into <alias> = Group
Můžete také zahrnout agregační funkce, které se mají použít pro skupinu.
Poznámky
Klauzuli Group By
můžete použít k rozdělení výsledků dotazu do skupin. Seskupení vychází z klíče nebo složeného klíče, který se skládá z více klíčů. Prvky přidružené ke shodným hodnotám klíče jsou zahrnuty do stejné skupiny.
Pomocí aggregateList
parametru Into
klauzule a klíčového Group
slova identifikujete název člena, který se používá k odkazování na skupinu. Do klauzule můžete zahrnout také agregační funkce Into
, které počítají hodnoty pro seskupené prvky. Seznam standardních agregačních funkcí najdete v tématu Agregační klauzule.
Příklad
Následující příklad kódu seskupí seznam zákazníků na základě jejich umístění (země/oblasti) a poskytne počet zákazníků v každé skupině. Výsledky jsou seřazené podle názvu země nebo oblasti. Seskupené výsledky jsou seřazené podle názvu města.
Public Sub GroupBySample()
Dim customers = GetCustomerList()
Dim customersByCountry = From cust In customers
Order By cust.City
Group By CountryName = cust.Country
Into RegionalCustomers = Group, Count()
Order By CountryName
For Each country In customersByCountry
Console.WriteLine(country.CountryName &
" (" & country.Count & ")" & vbCrLf)
For Each customer In country.RegionalCustomers
Console.WriteLine(vbTab & customer.CompanyName &
" (" & customer.City & ")")
Next
Next
End Sub