Продвижение сайта по поисковым запросам, контекстная реклама, качественный копирайтинг и рерайтинг, создание сайта под ключ, QA процедуры и аудит в ИТ, бизнес анализ в Киеве, Украина.

Поиск

Админ

Предложение GROUP BY sql


Предложение GROUP BY sql

Предложение GROUP BY позволяет вам определять подмножество значений в особом поле в терминах другого поля, и применять функцию агрегата к подмножеству. Это дает вам возможность объединять поля и агрегатные функции в едином предложении SELECT. Например, вы хотите найти наибольшую сумму приобретений, полученную каждым продавцом. Вы можете сделать раздельный запрос для каждого из них, выбрав MAX (amt) из таблицы Заказов для каждого значения поля snum. GROUP BY, однако, позволит Вам поместить их все в одну команду:

SELECT snum, MAX (amt)
FROM Orders
GROUP BY snum;

Вывод для этого запроса показывается в Рисунке 6.5.

===============  SQL Execution Log ==============
| SELECT snum, MAX (amt)                          |
| FROM Orders                                     |
| GROUP BY snum;                                  |
| =============================================== |
|  snum                                           |
|  ------   --------                              |
|   1001      767.19                              |
|   1002     1713.23                              |
|   1003       75.75                              |
|   1014     1309.95                              |
|   1007     1098.16                              |
=================================================

Рисунок 6.5. Нахождение максимальной суммы продажи у каждого продавца.

GROUP BY применяет агрегатные функции независимо от серий групп, которые определяются с помощью значения поля в целом. В этом случае, каждая группа состоит из всех строк с тем же самым значением поля snum, и функция MAX применяется отдельно для каждой такой группы. Это значение поля, к которому применяется GROUP BY, имеет, по определению, только одно значение на группу вывода, также как это делает агрегатная функция. Результатом является совместимость, которая позволяет агрегатам и полям объединяться таким образом. Вы можете также использовать GROUP BY с многочисленными полями. Совершенствуя вышеупомянутый пример далее, предположим, что вы хотите увидеть наибольшую сумму приобретений получаемую каждым продавцом каждый день. Чтобы сделать это, вы должны сгруппировать таблицу Заказов по продавцам и датам, и применить функцию MAX к каждой такой группе, подобно этому:

SELECT snum, odate, MAX (amt)
FROM Orders
GROUP BY snum, odate;

Вывод для этого запроса показывается в Рисунке 6.6.

===============  SQL Execution Log ==============
| SELECT snum, odate, MAX (amt)                   |
| FROM Orders                                     |
| GROUP BY snum, odate;                           |
| =============================================== |
|   snum        odate                             |
|  ------     ----------     --------             |
|   1001      10/03/1990       767.19             |
|   1001      10/05/1990      4723.00             |
|   1001      10/06/1990      9891.88             |
|   1002      10/03/1990      5160.45             |
|   1002      10/04/1990        75.75             |
|   1002      10/06/1990      1309.95             |
|   1003      10/04/1990      1713.23             |
|   1014      10/03/1990      1900.10             |
|   1007      10/03/1990      1098.16             |
=================================================

Рисунок 6.6. Нахождение наибольшей суммы приобретений на каждый день

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

Популярность: 5%




Оставить комментарий или два


Навигация

Блог / Главная / Разработка / Предложение GROUP BY sql

Инфо

Запись опубликовал admin 27 апреля 2010 года и разместил в рубрике Разработка.   Запись имеет метки:   К статье пока нет комментариев. Вы можете быть первым.  

Случайные записи

Специальные атрибуты COUNT подзапрос в sql План разработки сайта – SDP Порядок строк произволен