double arrow

Применение функций агрегирования


Оператор IS NULL

Поскольку в полях может быть значение NULL, которые расшифровываются как «неизвестные», то и операции над ними дают «неизвестное» (например NOT). Поэтому нужен механизм исключения (локализации) подмножества с NULL и это оператор IS NULL:

SELECT * FROM Customers WHERE city IS NULL;

Допустима противоположная конструкция IS NOT NULL. Еще пример на NOT с другими операторами:

WHERE NOT city IN (“London”, “Barcelona”);

Запросы могут давать в результате не только группу значений, но и работать по одному полю. Для этого применяются агрегатные функции:

· COUNT определяет количество строк или значений поля, выбранных посредством запроса (и не NULL);

· SUM- арифметическая сумма всех значений поля;

· AVG- среднее значение по выбранному полю;

· MAX, MIN.

Пример:

SELECT SUM (amt)

Имя поля попадает в аргумент
FROM Orders;

Сумма всех заявок из таблицы Orders. На выходе- единственное значение.

Специальные атрибуты в COUNT (подсчет)

Когда нужно подсчитать по столбцу, используют DISTINCT (только для различных значений).

SELECT COUNT (DISTINCT snum) FROM Orders;

Для того, чтобы считать целиком строки:

SELECT COUNT (*) FROM Customers;

и NULL и повторения включаются.

Если мы хотим исключить NULL и сузить до поля, то используется ALL:




SELECT COUNT (ALL rating) FROM Customers;

Подсчитываем исключая NULL, но включая повторения.

Скалярные выражения

До сих пор в аргументах агрегатных функций было одно поле, возможно и выражение:

SELECT MAX (binc + amt) FROM Orders

Для каждой строки сначала берется сумма двух полей, а потом из всех таких сумм- МАХ.







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