П. Г. Демидова А. В. Зафиевский А. А. Короткин А. Н. Лататуев Базы данных Учебное пособие
Download 1.32 Mb. Pdf ko'rish
|
Базы данных
3.4.7. Работа с группами
В чистом виде итоговые функции применяются довольно редко. Гораздо чаще они используются для расчета промежуточ- ных итогов, получаемых применением статистических функций к отдельным группам строк таблицы. Группировка строк произ- водится по принципу равенства значений для этих строк в одном 60 или нескольких столбцах, называемых столбцами группировки. Типичным примером является запрос SELECT stip, COUNT(stip), SUM(stip) FROM stud GROUP BY stip . Результирующая таблица содержит возможные размеры сти- пендий, количество студентов, получающих такую стипендию, и общую сумму, выделенную на стипендии такого размера. В запросе с группировкой перечень выводимых столбцов должен содержать все столбцы группировки (и никакие другие), а также одну или несколько статистических функций, не обяза- тельно относящихся к столбцам группировки. Например, запрос SELECT grp, SUM(stip) FROM stud GROUP BY grp выведет размер стипендиального фонда для каждой студен- ческой группы. Отметим одну особенность обработки пустых значений при группировке. Если столбец группировки содержит пустые значе- ния, то все строки, имеющие пустые значения в этом столбце, помещаются в одну группу. Часто бывает нужным вывести не все промежуточные итоги, а только какую-либо их часть. Для этого применяется фраза HAVING <условие> , где условие – это логическое выражение, состав- ленное из статистических функций и/или столбцов группировки. Вот примеры таких запросов: SELECT grp, SUM(stip) FROM stud GROUP BY grp HAVING AVG(stip)>1500 ; SELECT grp, SUM(stip) FROM stud GROUP BY grp HAVING grp LIKE 'МО%' . Допускается использование с одном запросе как фразы HAVING , так и фразы WHERE . Так запрос SELECT grp, COUNT(stip) FROM stud WHERE gor='Ярославль' AND stip>0 GROUP BY grp HAVING grp LIKE 'МО%' выведет количество ярославских студентов, получающих стипендию, в группах МО. В заключение приведем нетривиальный пример использова- ния операции объединения: получение результирующей таблицы с промежуточными итогами: SELECT grp, ' '+fam AS fam, stip FROM stud |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling