Шаблон представляет собой текстовую строку с возможным использованием метасимвола (например, «*» - произвольная последовательность символов).
Пример:
SELECT * FROM студент
WHERE sgrp LIKE («*3»);
Результат:
snum |
sname |
sgrp |
spdp |
004 |
С-4 |
Г-3 |
Поля таблицы могут содержать значение NULL, т.е. значение не задано. Такие поля не равны ни каким другим, в том числе NULL-значениям. Результатом сравнения NULL-значения с другим значением есть неизвестность. Обычные операции сравнения не могут быть использованы для сравнения со значением NULL. И, в таком случае, должен быть использован оператор ISNULLв формате:
имя_поля ISNULL;
Пример:
SELECT * FROM студент
WHERE spdp ISNULL;
Результат:
snum |
sname |
sgrp |
spdp |
004 |
С-4 |
Г-3 |
Некоторые системы, в том числе Microsoft Access, логическое выражение имя_поля = NULL автоматически преобразовывает имя_поля ISNULL.
2. Суммирование данных с помощью функций агрегирования (групповых функций).
Функции агрегирования предназначены для расчёта значений по группам строк таблицы. Стандарт SQL определяет следующие функции агрегирования:
Как видно, таких функций меньше, чем обеспечивает, к примеру, Microsoft Access. В функции агрегирования указываются вместо имён полей в операторе SELECT, а имена полей задаются как параметры функций. Для SUM и AVG поля-параметры должны быть числовыми, а для COUNT, MIN и MAX – как числовые, так и символьные поля-параметры.
Пример:
Получить среднюю оценку студента с кодом 003.
SELECT AVG (ocen)
FROM оценка
WHERE snum = «003»;
Результат:
AVG (ocen) |
3 |
В функции COUNT могут быть использованы специальные атрибуты.
CONT (*) – количество строк в таблице.
Пример 1:
SELECT COUNT (*) FROM студент;
Результат: 4
Пример 2:
SELECT COUNT (spdp) FROM студент;
Результат: 3
Также в COUNT можно задать количество неповторяющихся значений поля:
COUNT (DISTINCT имя_поля);
Пример:
SELECT COUNT (DISTINCT opnum);
Результат: 2
Предложение GROUPBY позволяет определить подмножество значений одного поля в терминах другого поля и применить функцию агрегирования к полученному подмножеству. В предложении GROUPBY перечисляются имена полей, при одинаковых значениях которых, записи объединяются в подмножества.
Пример 1:
Получить суммарный бал студента:
SELECT osnum, SUM (ocen);
FROM оценкаGROUPP BY osnum;
Результат:
osnum |
SUM (ocen) |
001 |
10 |
002 |
4 |
003 |
9 |
Пример 2:
Получить средний бал студента у преподавателя:
SELECT opnum, osnum, AVG (ocen)
FROM оценкаGROUP BY opnum, osnum;
Результат:
opnum |
osnum |
AVG (ocen) |
001 |
001 |
5 |
001 |
002 |
4 |
001 |
003 |
3 |
003 |
001 |
5 |
003 |
3 |
При использовании GROUPBY может потребоваться наложить условие на включение записей по группам в результирующую таблицу.
Пример:
Получить сведения о студентах, у которых средний бал не ниже 4-ёх:
SELECT osnum, AVG (ocen)
FROM оценка
WHERE AVG(ocen) >= 4;
GROUP BY osnum;
Запрос такого вида является некорректным, т.к. применять функции агрегирования в предложении WHERE нельзя, т.к. каждое условие проверяется для каждой строки, а не для группы строк. В данном случае следует применить предложение HAVING:
SELECT osnum, AVG (ocen)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.