Книга: Обработка баз данных на Visual Basic®.NET
Запросы, которые группируют данные и подводят итоги
Часто требуется создавать запросы, подобные следующему: "Сколько заказов поступило вчера?" При этом вас не интересует, кто оформил заказ, вы только хотите знать количество вчерашних заказов. Это можно сделать, используя запросы, группирующие итоговые функции.
Запросы с группировкой подводят итоги по одному или нескольким полям. Например, если вам интересно увидеть число заказов для каждого клиента, то нужно создать приведенный ниже запрос для таблицы tblOrder с группировкой данных по полю CustomerID.
SELECT CustomerID, COUNT(CustomerID) AS TotalOrders
FROM tblOrder
GROUP BY CustomerID
Результат выполнения такого запроса приведен ниже.
CustomerID | TotalOrders |
---|---|
1 | 2 |
2 | 1 |
4 | 3 |
5 | 1 |
7 | 1 |
8 | 2 |
Обратите внимание на использование предложения AS в этом выражении SQL. Оно предназначено для присвоения имени столбцу, содержащему результат итоговой функции, поскольку этот результат вычисляется, а не хранится в базе данных.
Для отображения имен клиентов вместо их идентификаторов нужно просто объединить с результатами запроса данные из таблицы tblCustomer.
SELECT tblOrder.CustomerID, FirstName, LastName
COUNT(dbo.tblOrder.CustomerID) AS TotalOrders
FROM tblOrder INNER JOIN tblCustomer
ON tblOrder.CustomerID = tblCustomer.ID
GROUP BY FirstName, LastName, CustomerID
После выполнения такого запроса будет получен приведенный ниже результат.
CustomerID | FirstName | LastName | TotalOrders |
---|---|---|---|
1 | John | Smith | 2 |
2 | Jill | Azalia | 1 |
4 | Daisy | Klein | 3 |
5 | Dave | Martin | 1 |
7 | Thurston | Ryan | 1 |
8 | Jane | Winters | 2 |
В этом случае предложение GROUP BY содержит поле CustomerID вместе с объединенными полями FirstName и LastName из таблицы tblCustomer. При использовании предложения GROUP BY в него необходимо включить все поля, по которым группируются извлекаемые записи. В данном случае идентификатор клиента и его имя участвуют в группировании данных и потому присутствуют в предложении GROUP BY. (К счастью, если вы забудете выполнить эту операцию, среда Visual Studio .NET автоматически предложит вам сделать это.)
- Достоверные данные
- Запросы на обновление
- Как завершить работу с программой и сохранить данные, с которыми я работал?
- Как продолжить работать с данными, которые я сохранил вчера?
- Кризис – это возможность. 10 стратегий, которые позволят вам процветать в эпоху перемен Скотт Стейнберг
- Как переносить данные через USB-брелок («флэшку»)?
- В дисках используется не NTFS, а я хочу защитить свои данные. Как быть?
- Могу ли я изменить или отключить звуки, которые проигрываются при запуске Windows, щелчке кнопкой мыши на папке и т. д.?
- При завершении работы Windows сообщает, что некоторые процессы не отвечают, и компьютер не выключается. Как завершать та...
- Запросы, подсчитывающие строки
- Я установил Service Pack 2 для Windows XP, но с ним не хотят работать некоторые программы. Как его удалить из системы?
- Если я куплю 64-битный процессор, будут ли у меня работать программы, которые были разработаны специально для 32-битных ...