В начало
Лабораторная работа № 6
Агрегирование данных с использованием фразы HAVING
Выдать различные: 1)
фамилии людей и число людей с каждой из этих фамилий,
ограничив список фамилиями, встречающимися не менее 50 раз. 2)
имена людей и число людей с каждым из этих имен,
ограничив список именами, встречающимися не менее 300 раз. 3)
отчества людей и число людей с каждым из этих отчеств,
ограничив список отчествами, встречающимися не менее 300 раз. Списки упорядочить по уменьшению количества фамилий (имен или отчеств). 1) SELECT фамилия, COUNT(фамилия) FROM н_люди GROUP BY фамилия HAVING COUNT(фамилия)>=50 ORDER BY 2 DESC 2) SELECT имя, COUNT(имя) FROM н_люди GROUP BY имя HAVING COUNT(имя)>=300 ORDER BY 2 DESC ИЛИ SELECT имя, COUNT(*) FROM н_люди GROUP BY имя HAVING COUNT(*)>=300 ORDER BY 2 DESC 3) SELECT отчество,
COUNT(*) FROM н_люди GROUP BY отчество HAVING COUNT(*)>=300 ORDER BY 2 DESC 26) Найти группы, в которых
4.7.2004 было менее десяти обучающихся студентов. SELECT группа, COUNT(*)
число_учеников FROM н_ученики WHERE TO_CHAR(начало)<'04.07.2004' AND TO_CHAR(конец)>'04.07.2004' GROUP BY группа HAVING COUNT(*)<10 27) В таблице Н_ГРУППЫ_ПЛАНОВ найти
номера планов, по которым обучается (обучалось) более 4 групп. SELECT план_ид, COUNT(план_ид)
число_групп FROM н_группы_планов GROUP BY план_ид HAVING COUNT(*)>4 ·
Вывести
номера отделов, которые имеют в своем составе более 3 отделов SELECT отд_ид, COUNT(*) FROM н_отделы GROUP BY отд_ид HAVING COUNT(*)>3 ORDER BY 1 ·
Найти года,
в которые студенты получили больше 500 троек. SELECT TO_CHAR(дата,'YYYY'), COUNT(оценка) число_оценок FROM н_ведомости WHERE оценка='3' GROUP BY TO_CHAR(дата,'YYYY') HAVING COUNT(*)>500 ORDER BY 1 |
| |