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


Практическое руководство. Группировка строк в результатах запроса

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

Например, может возникнуть необходимость узнать среднюю стоимость одной из книг, данные о которых хранятся в таблице titles, и выполнить детализацию результатов по издателям. Для этого следует сгруппировать запрос на основе идентификатора издателя (например pub_id). Сведения, выведенные таким запросом, могли бы выглядеть следующим образом:

Снимок экрана QueryGroupingRowsResultsPane

При помощи группировки данных можно отобразить только сводные или сгруппированные данные, подобные следующим.

  • Значения сгруппированных столбцов (столбцов, указанных в предложении GROUP BY). В приведенном выше примере столбец pub_id является сгруппированным.

  • Значения, созданные агрегатными функциями, такими как SUM( ) и AVG( ). В приведенном выше примере второй столбец создается путем применения функции AVG( ) к столбцу price.

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

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

Например, следующий запрос таблицы titles группирует данные по идентификаторам издателей (pub_id) и типам книг (type). Результаты запроса упорядочиваются по идентификаторам издателей и представляют сводные данные о каждом типе книг, издаваемых издателем:

SELECT pub_id, type, SUM(price) Total_price
FROM titles
GROUP BY pub_id, type

Итоговые выходные данные могут иметь следующий вид:

Снимок экрана QueryGroupingRowsSampleOutput

Примечание

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Чтобы выполнить группировку строк

  1. Запустите запрос, добавив в область схем таблицы, сводные данные по которым нужно получить.

  2. Щелкните правой кнопкой мыши фон области схемы, а затем выберите в контекстном меню пункт Добавить группировку. Конструктор запросов и представлений добавит столбец Группировка в сетку в области условий.

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

    Конструктор запросов и представлений добавит в инструкцию, отображаемую на области SQL, предложение GROUP BY. Например, инструкция SQL может иметь такой вид:

    SELECT pub_id
    FROM titles
    GROUP BY pub_id
    
  4. Добавьте в область условий столбец или столбцы, статистические данные по которым нужно получить. Убедитесь, что столбец помечен для вывода.

  5. В ячейке Группировать для столбца, статистические данные по которому нужно получить, выберите подходящую агрегатную функцию.

    Конструктор запросов и представлений автоматически назначает суммируемому столбцу псевдоним. Этот созданный автоматически псевдоним можно заменить более содержательным. Дополнительные сведения см. в разделе Практическое руководство. Создание псевдонимов столбцов.

    Снимок экрана QueryGroupingRows

    Соответствующая инструкция в области SQL может иметь следующий вид:

    SELECT   pub_id, SUM(price) AS Totalprice
    FROM     titles
    GROUP BY pub_id
    

См. также

Другие ресурсы

Сортировка и группировка результатов запроса