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

Предложение 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

1004
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: Нахождение наибольшей суммы приобретений на каждый день
Конечно же, пустые группы, в дни когда текущий продавец не имел порядков, не будут показаны в выводе.
 
 
 

‹ Специальные атрибуты COUNT
Вверх
Предложение HAVING ›

Айтистанция
Добавить комментарий

Adblock
detector