Поделиться через


Предложение group by (Visual Basic)

Группируемые элементы результата запроса. Можно также использовать для применения агрегатных функций к каждой группе. Операция группировки основана на одном или нескольких ключах.

Синтаксис

Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]  
  Into aggregateList  

Комплектующие

  • listField1, listField2

    Необязательно. Одно или несколько полей переменной запроса или переменных, которые явно определяют поля, которые должны быть включены в сгруппированные результаты. Если поля не указаны, все поля переменной запроса или переменные включаются в сгруппированные результаты.

  • keyExp1

    Обязательное. Выражение, определяющее ключ, используемый для определения групп элементов. Можно указать несколько ключей, чтобы указать составной ключ.

  • keyExp2

    Необязательно. Один или несколько дополнительных ключей, которые объединяются с keyExp1 созданием составного ключа.

  • aggregateList

    Обязательное. Одно или несколько выражений, определяющих агрегированную обработку групп. Чтобы определить имя члена для сгруппированных результатов, используйте Group ключевое слово, которое может находиться в любой из следующих форм:

    Into Group  
    

    -или-

    Into <alias> = Group  
    

    Вы также можете включить агрегатные функции для применения к группе.

Замечания

Предложение можно использовать Group By для разрыва результатов запроса на группы. Группирование основано на ключе или составном ключе, состоящем из нескольких ключей. Элементы, связанные с соответствующими значениями ключей, включаются в ту же группу.

Параметр предложения и Group ключевое Into слово используются aggregateList для идентификации имени члена, используемого для ссылки на группу. Вы также можете включить агрегатные функции в Into предложение для вычислений значений сгруппированных элементов. Список стандартных статистических функций см. в предложении "Агрегат".

Пример

Следующий пример кода группируют список клиентов в зависимости от их расположения (страны или региона) и предоставляют количество клиентов в каждой группе. Результаты упорядочены по имени страны или региона. Сгруппированные результаты упорядочены по имени города.

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

См. также