Пример 12. Операции группировки

Пример 11.

Операции группировки

Вложеные запросы.

Многотабличный запрос

Составное условие

WHERE [NOT] условие1 [AND/OR] [NOT] условие2…

условия:

значение {=/<>/<=/</>=/>} {константа/выражение}

значение1 [NOT] BEETWEEN значение2 AND значение3

значение [NOT] IN {список констант/значений}

значение IS [NOT] NULL

Пример3:

Сотрудники с окладом 800..1000 р.

SELECT Фамилия

FROM Сотрудники

WHERE Оклад BEETWEEN 800 AND 1000

Пример4:

Сотрудники 2, 5 и 6 отделов

SELECT Фамилия

FROM Сотрудники

WHERE Отдел IN 2,5,6

Пример5:

Студенты АД-76, не сдававшие экзамен

SELECT Фамилия

FROM Студент

WHERE Группа=’АД-76’ AND Оценка IS NULL

ORDER BY Упорядочить выводимые поля

ASC по возрастанию

DESC по убыванию

Пример6:

Студенты АД-76, упорядоченные по алфавиту

SELECT Фамилия

FROM Студент

WHERE Группа=’АД-76’

ORDER BY Фамилия ASC

Сотрудники:

Код сотрудника Фамилия Код отдела
  Иванов  
  Петров  

Отделы

Код отдела Название
  Снабжение

Пример7:

Список сотрудников из отдела «Снабжения»

SELECT Фамилия

FROM Сотрудники, Отдел

WHERE Название=’Снабжение’

AND Сотрудники.КодОтдела=Отдел.КодОтдела

Алгоритм выполнения запроса:

1. Строится декартово произведение таблиц

2. Из результата произведения выбираются нужные строки

3. Из строк выбираются нужные столбцы

Пример8:

КодСотрудника ФИО КодОтдела КодНачальника
       

Необходимо выбрать ФИО и Фамилию начальника

SELECT А.Фамилия, В.Фамилия

FROM Сотрудник.А, Сотрудник.В

WHERE В.КодСотрудник=А.КодНачальника

Подзапрос помещается в WHERE главного запроса

Пример9:

Расписание

КодСотрудника День Время

Должности работающих в понедельник

SELECT Должность

FROM Сотрудник

WHERE КодСотрудника IN (

SELECT КодСотрудника

FROM Расписание

WHERE День=’Понедельник’

)

Подзапросы бывают двух видов:

1. Некорелированные (результат подзапроса не зависит от главного запроса)

2. Корелированные (связи нет)

Пример10:

Списки людей, работающих в тех отделах, которые работают по понедельникам

Расписание

КодОтдела День Время

SELECT Должность

FROM Сотрудники

WHERE КодОтдела IN (

SELECT КодОтдела

FROM Расписание

WHERE День=’Понедельник’ AND

Сотрудник.КодОтдела=

Расписание. КодОтдела=

)

Встроенные в SQL функции

SUM Суммирование
COUNT Количество элементов в группе
AVG Среднее значение в группе
MAX Максимальной значение в группе
MIN Минимальной значение в группе

Максимальный и минимальный оклад

SELECT MAX(Оклад), MIN(Оклад)

FROM Сотрудники

Группировка:

SELECT...

...

...

GROUP BY {поле1, поле2} [HAVING условие]

HAVING- условие, накладываемое на группу

Максимальный и минимальный оклад в отделе

SELECT MAX(Оклад), MIN(Оклад)

FROM Сотрудники

GROUP BY КодОтдела


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: