Оператор 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)
|
Сумма всех заявок из таблицы 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
Для каждой строки сначала берется сумма двух полей, а потом из всех таких сумм- МАХ.