FROM title
ORDER BY sales;
В SQL применяется функция COALESCE. чтобы исключить в запросах появление значений NULL. Результатом является значение первого выражения из списка, которое не является NULL.
COALESCE (state, “Нет данных”)
В Access функция не поддерживается, вместо нее применяется функция Switch.
Пример. Запрос NO-NULL
SELECT pub_name,
city,
Switch (state IS NOT NULL, state, state IS NULL, "Нет данных") AS "Штат"
FROM Publisher;
Наоборот для подстановки значения NULL может применяться в SQL функция NULLIF, которая также не поддерживается Access.
Пример. Запрос 0-to-NULL
SELECT title_name,
contract,
IIF(contract=0, Null,IIF(contract IS Null,0,contract))
FROM Title;
Конструкция GROUP BY группирует строки запроса. Конструкция HAVING фильтрует группы строк. Каждой группе можно сопоставить резюмирующее значение, вычисленное посредством агрегатной функции: MIN, MAX, SUM, AVG, COUNT, CONT(*). Функция COUNT вычисляет количество значений заданного выражения (количество экземпляров кортежей), не равных NULL. CONT(*) – число строк (кортежей).
Все функции, за исключением COUNT, игнорируют значение NULL (если при вычислении COUNT все значения NULL – результат 0).
Коммерческие СУБД предоставляют и иные функции, например для вычисления статистических показателей.
Любое предложение команды SELECT должно содержать либо неагрегатные выражения либо агрегатное выражение.
Пример. Запрос Sales-MIN-MAX
SELECT MIN(sales) AS "MIN", MAX(sales) AS "MAX"
FROM Title;
Допускается применение агрегатных выражений для тех столбцов, по которым проводится группировка.
Пример. Запрос Sales-Type
SELECT type,
SUM(sales) AS "Продажи"
FROM Title
GROUP BY type;
Агрегатное выражение не может присутствовать в конструкции WHERE. Однако его можно применить в подзапросах.
Пример. Запрос INFO-MAX
SELECT title_name,
price,
sales
FROM title
WHERE sales = (SELECT MAX(sales) FROM Title);
Агрегатные функции не могут быть аргументом другой агрегатной функции.
Примечание. В Oracle агрегатные выражения могут вкладываться друг в друга, но только в запросах с группировкой.
SELECT AVG(MAX(sales))
FROM title
GROUP BY type;
Задание.
1) Найти мин. цену издания
2) Найти мин. количество страниц в издании
3) Найти издание с мин. ценой
4) Найти издание минимального объема
5) Найти макс. длину фамилии автора (au_lname)
6) Найти разность между мин. и макс. ценой
7) Найти разность между мин. и макс. продажей
8) Найти выручку от издания с максимальным объемом продаж
9) Рассчитать объем продаж за некоторый интервал
10) Вычислить суммарную выручку
11) Рассчитать средние продажи по категориям
12) Найти издания, продажи которых выше среднего
Функция COUNT(выражение) определяет число строк, для которых значение выражение не равно NULL. Функция COUNT(*) – число строк, включая дубликаты и значения NULL.
Пример. Количество авторов, получивших предоплату. (Запрос COUNT_Prepayment)
SELECT
COUNT (advance) AS "Кол-во предоплат"
FROM Roaylties;
В SQL допускается предложение DISTINCT в агрегатных функциях, COUNT (DISTINCT price). Access не поддерживает такой возможности.
Пример. Количество вариантов гонорара. (Запрос Kind_Royalties)
SELECT
COUNT(roaylty_rate) AS "Варианты гонорара"
FROM (SELECT DISTINCT roaylty_rate FROM Roaylties);
При группировании данных общий вид оператора SELECT:
SELECT столбцы
FROM таблица
WHERE условие
GROUP BY столбцы групп
HAVING условие-фильтр
ORDER BY столбцы сортировки
Группирующими могут быть столбцы таблицы или вычислимые столбцы. Любой неагрегатный столбец в предложении SELECT должен содержаться в предложении GROUP BY. Значение NULL образует отдельную группу. Применять псевдонимы в предложении GROUP BY нельзя.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.