функции, основанные на сравнении
В этом подразделе я кратко расскажу об операторах и функциях, которые, как и операторы из подраздела «Операторы сравнения», сравнивают две или несколько величин, однако возвращают не логическое значение (TRUE, FALSE или NULL), а один из своих аргументов (или порядковый номер аргумента). Рассмотрим эти функции.
• LEAST(
Данная функция возвращает наименьший из своих аргументов (либо NULL, если один из аргументов равен NULL). Например, выражение LEAST(000 'Кускус','Петров','Крылов') возвращает значение «Крылов». Отметим, что в функции LEAST() можно указать только фиксированное количество аргументов. Например, невозможно получить первое в алфавитном порядке имя клиента с помощью запроса SELECT LEAST(name) FROM Customers; вместо этого необходимо использовать групповую функцию MIN() (о ней вы узнаете в разделе «Групповые функции»).
• GREATEST(
Данная функция возвращает наибольший из своих аргументов (либо NULL, если по крайней мере один из аргументов равен NULL). Например, выражение GREATEST (ООО «Кускус», Петров, Крылов) возвращает значение «Петров». Как и в функции LEAST(), в функции GREATEST() можно указать только фиксированное количество аргументов. Например, невозможно получить последнее в алфавитном порядке имя клиента с помощью запроса SELECT GREATEST(name) FROM Customers; вместо этого необходимо использовать групповую функцию MAX() (см. раздел «Групповые функции»).
• INTERVAL(
Функция INTERVAL возвращает порядковый номер наибольшего из чисел
•
•
•
•
Все аргументы этой функции являются целыми числами (если вы укажете аргумент с другим типом данных, он будет преобразован в целочисленное значение). Чтобы функция возвращала корректный результат, необходимо, чтобы значения
• GOALESCE (
Данная функция возвращает первый из аргументов, который отличен от NULL (а если все аргументы равны NULL, то возвращает значение NULL). Например, выражение COALESCE(NULL,1/0,'TeKCT') возвращает значение «Текст», поскольку это первый аргумент, отличный от NULL (при делении на 0 результатом является NULL).
• IF(a,b,c).
Данная функция проверяет, является ли истинным логическое значение или выражение• IFNULL(a,b). Данная функция возвращает значение
• NULLIF(a,b). Данная функция возвращает значение NULL, если
• CASE x WHEN a1 THEN b1.
или
Оператор CASE обеспечивает последовательную проверку списка условий и возвращает значение в зависимости от того, какое из условий выполнено. В первом варианте значение выражения х сравнивается со значениями
• если
• если значение выражения
• если значение выражения
Во втором варианте последовательно проверяется истинность логических выражений
• если
• если ни одно из выражений
• если ни одно из выражений
выводит классификацию заказов в зависимости от их стоимости (табл. 3.22). Таблица 3.22. Результат выполнения запроса
Итак, мы рассмотрели операторы и функции, с помощью которых вы можете сравнивать между собой различные величины, в том числе сравнивать значение с результатом подзапроса, а также проверять выполнение различных условий. Следующий важный и часто используемый класс функций – групповые функции.3.2. Групповые функции
Групповые, или агрегатные, функции используются для получения итоговой, сводной информации на основе значений, хранящихся в столбце таблицы. В этом разделе вы узнаете об этих функциях, а также об особенностях синтаксиса запросов, использующих эти функции.
Перечень групповых функций
Для вычисления обобщающего значения столбца таблицы предназначены следующие функции.
SUM()
Данная функция возвращает сумму значений в столбце. Неопределенные значения при этом не учитываются. Если запросом не найдено ни одной строки или все значения в столбце равны NULL, то функция возвращает значение NULL.
Например, запрос
возвращает сумму рейтингов клиентов – величину, полученную при сложении значений 1000 + 1500 + 1000 (табл. 3.23). Таблица 3.23. Результат выполнения запроса
Исключить повторяющиеся значения при подсчете суммы можно с помощью параметра DISTINCT. Если указан этот параметр, то каждое значение столбца будет учтено в сумме только один раз, даже если в столбце оно встречается несколько раз.
Например, запросподсчитывает сумму только несовпадающих рейтингов (табл. 3.24). Таблица 3.24. Результат выполнения запроса
Число, возвращаемое этим запросом, является суммой значений 1000 и 1500; еще одно значение 1000, имеющееся в столбце rating, запросом игнорируется.
Если в запросе вы укажете какое-либо условие отбора, то суммирование произойдет