Методическое пособие к лабораторным работам по курсу «База данных» Ташкент 2022


AND LOWER(t.Dolgnost ) = 'профессор' GROUP BY


Download 3.26 Mb.
bet39/91
Sana15.11.2023
Hajmi3.26 Mb.
#1777302
TuriМетодическое пособие
1   ...   35   36   37   38   39   40   41   42   ...   91
Bog'liq
Metodichka BD

AND LOWER(t.Dolgnost ) = 'профессор'
GROUP BY d.Name_kafedru
HAVING COUNT(*) > 0;


Фраза HAVING без GROUP BY
Фраза HAVING может использоваться лишь при наличии фразы GROUP BY. Из этого правила синтаксис SQL допускает только одно исключение: когда вся таблица интерпретируется как одна группа. В этом случае в списке фразы SELECT можно использовать только константы, агрегатные функции и выражения над ними. Приведем примеры.

  1. Если суммарная зарплата всех преподавателей превышает 15 000, вывести их минимальную ставку, максимальную надбавку и суммарную зарплату.

SELECT MIN(Salary), MAX(Rise), SUM(Salary + Rise)
FROM TEACHER
HAVING SUM(Salary + Rise) > 15000;
При наличии фразы WHERE сначала производится отбор строк согласно ее условию, и только после этого применяется условие фразы HAVING.

  1. Если суммарная зарплата всех ассистентов превышает 2500, вывести их среднюю ставку, среднюю надбавку и суммарную зарплату.

SELECT AVG(Salary), AVG(Rise), SUM(Salary + Rise)
FROM TEACHER
WHERE LOWER(Dolgnost ) = 'ассистент'
HAVING SUM(Salary + Rise) > 2500;
На практике фраза HAVING очень редко используется без фразы GROUP BY, изза чего такая возможность предоставляется не во всех СУБД.
Пример выполнения задания для предметной области «Запись на прием»:
Для выполнения нескольких операций с данными выберем таблицу.
В созданной базе данных рассмотрим таблицу Visit.

Рис. 6.2.1. Вывод данных таблицы “visit”.

Применив команды Group by и Having можно сгруппировать данные и отсортировать по цене выше среднего.



Рис. 6.2.2. Cортировка по цене выше среднего в таблице “visit”.

Следует отметить, что предложение HAVING может использоваться и без предложения GROUP BY. При отсутствии предложения GROUP BY агрегатные функции применяются ко всему выходному набору строк запроса, т.е. в результате мы получим всего одну строку, если выходной набор не пуст.


Таким образом, если условие на агрегатные значения в предложение HAVING будет истинным, то эта строка будет выводиться, в противном случае мы не получим ни одной строки. Рассмотрим такой запрос.

Рис. 6.2.3. Применение агрегатных функции в таблице “visit”.

Этот запрос показывает минимальную, максимальную и среднюю цену в таблице визитов. Далее этому запросу применим команду Having с двумя разными условиями. В первом случае имеем результат такой же как и выше.



Рис. 6.2.4. Применение агрегатных функции в таблице “visit”.

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


Далее рассмотрим запрос где используются фразы Order by, Group by и Having. Запрос составлен для того чтобы найти доход врачей, у кого количество пациентов больше одного.




Download 3.26 Mb.

Do'stlaringiz bilan baham:
1   ...   35   36   37   38   39   40   41   42   ...   91




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling