Группировка и агрегатные функции

Агрегатные функции могут вычисляться как по всей таблице, так и по отдельным группам строк, в последнем случае над таблицей выполняется операция группировки.

При группировке формируются группы с одинаковыми значениями в столбце группировки (или нескольких столбцах), запрос возвращает столько строк, сколько получилось групп. Фактически, количество групп совпадает с количеством уникальных значений в столбце группировки, поэтому группировку принято выполнять по столбцам, содержащим большое количество повторяющихся значений. Тогда количество групп будет значительно меньше, чем количество строк в таблице.

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

Например, сгруппировав эту таблицу по столбцу cod_st, можно подсчитать различные итоговые данные по каждому студенту. Так, запрос:

Select cod_st, avg(mark) avg_mark, count(mark) count_mark

from marks

GROUP BY cod_st

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

Если выполнить группировку таблицы marks по столбцу cod_sub (код предмета), то можно подсчитать те же итоговые данные по каждому предмету. Но тогда в список вывода запроса, кроме агрегатных функций, можно включить только код предмета.

Select cod_sub, avg(mark) avg_mark, count(mark) count_mark

from marks

GROUP BY cod_sub

Обобщив примеры, выведем общее правило для запросов с группировкой:

в списке выражений, который следует за словом SELECT, могут быть только выражения из фразы group by и агрегатные функции(или выражения на их основе).








Дата добавления: 2015-08-26; просмотров: 953;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.