СПРАВОЧНИК
Функции и операторы SQL
Агрегатные, строковые, числовые и оконные функции
Алфавитно-тематический справочник функций и операторов SQL с рабочими примерами и комментариями -- результат. Каждая запись показывает синтаксис и поведение функции; различия диалектов PostgreSQL и MySQL отмечены отдельно. Темы: агрегатные, строковые, числовые функции, работа с датой и временем, условные выражения, оконные функции и предикаты.
Агрегатные функции 7
ARRAY_AGG()
ARRAY_AGG(expr)Собирает значения группы в массив (PostgreSQL).AVG()
AVG(expr)Среднее арифметическое значений.COUNT()
COUNT(expr)Считает количество строк или непустых значений.MAX()
MAX(expr)Максимальное значение в группе.MIN()
MIN(expr)Минимальное значение в группе.STRING_AGG() / GROUP_CONCAT()
STRING_AGG(expr, sep)Склеивает значения группы в одну строку.SUM()
SUM(expr)Сумма числовых значений в группе.Дата и время 10
AGE()
AGE(end, start)Разница между датами как интервал (PostgreSQL).CURRENT_DATE
CURRENT_DATEТекущая дата без времени.CURRENT_TIMESTAMP
CURRENT_TIMESTAMPТекущие дата и время (стандарт SQL).DATEADD() / INTERVAL
date + INTERVAL 'n unit'Добавляет интервал к дате.DATE_PART()
DATE_PART(part, source)Извлекает часть даты (PostgreSQL).DATE_TRUNC()
DATE_TRUNC(part, source)Усекает дату до начала периода (PostgreSQL).EXTRACT()
EXTRACT(part FROM source)Извлекает часть из даты/времени.NOW()
NOW()Текущие дата и время.TO_CHAR()
TO_CHAR(value, format)Форматирует дату/число в строку (PostgreSQL).TO_DATE()
TO_DATE(str, format)Парсит строку в дату (PostgreSQL).Оконные функции 10
DENSE_RANK()
DENSE_RANK() OVER (...)Ранг без пропусков при совпадениях.FIRST_VALUE()
FIRST_VALUE(expr) OVER (...)Первое значение в окне.LAG()
LAG(expr, offset, default) OVER (...)Значение из предыдущей строки окна.LAST_VALUE()
LAST_VALUE(expr) OVER (...)Последнее значение в окне.LEAD()
LEAD(expr, offset, default) OVER (...)Значение из следующей строки окна.NTILE()
NTILE(n) OVER (...)Делит строки на n равных групп.OVER / PARTITION BY
func() OVER (PARTITION BY col ORDER BY col)Определяет окно для оконных функций.RANK()
RANK() OVER (...)Ранг с пропусками при совпадениях.ROW_NUMBER()
ROW_NUMBER() OVER (...)Порядковый номер строки в окне.SUM() OVER
SUM(expr) OVER (ORDER BY ...)Накопительная (скользящая) сумма.Операторы и предикаты 6
ANY / ALL
expr op ANY/ALL (subquery)Сравнение значения с результатами подзапроса.BETWEEN
expr BETWEEN a AND bПроверка попадания в диапазон (включительно).EXISTS
EXISTS (subquery)Истинно, если подзапрос вернул хотя бы строку.IN
expr IN (v1, v2, ...)Проверка вхождения в список значений.IS NULL
expr IS NULLПроверка на пустое значение.LIKE
expr LIKE patternСопоставление строки с шаблоном.Строковые функции 16
CONCAT()
CONCAT(s1, s2, ...)Объединяет строки в одну.LEFT()
LEFT(str, n)Первые n символов строки.LENGTH()
LENGTH(str)Длина строки в символах.LOWER()
LOWER(str)Переводит строку в нижний регистр.LPAD()
LPAD(str, len, fill)Дополняет строку слева до нужной длины.LTRIM()
LTRIM(str)Удаляет символы слева.POSITION() / INSTR()
POSITION(sub IN str)Индекс первого вхождения подстроки.REPLACE()
REPLACE(str, from, to)Заменяет все вхождения подстроки.REVERSE()
REVERSE(str)Переворачивает строку.RIGHT()
RIGHT(str, n)Последние n символов строки.RPAD()
RPAD(str, len, fill)Дополняет строку справа до нужной длины.RTRIM()
RTRIM(str)Удаляет символы справа.SPLIT_PART()
SPLIT_PART(str, sep, n)Берёт n-ю часть строки по разделителю (PostgreSQL).SUBSTRING()
SUBSTRING(str FROM pos FOR len)Извлекает подстроку.TRIM()
TRIM([chars FROM] str)Убирает пробелы (или заданные символы) с обоих концов.UPPER()
UPPER(str)Переводит строку в верхний регистр.Условные функции 7
CASE WHEN
CASE WHEN cond THEN x ... ELSE y ENDВетвление: возвращает значение по условию.CAST()
CAST(value AS type)Приводит значение к указанному типу.COALESCE()
COALESCE(v1, v2, ...)Возвращает первое непустое значение.GREATEST()
GREATEST(v1, v2, ...)Наибольшее из перечисленных значений.IFNULL() / ISNULL()
IFNULL(a, b)Заменяет NULL на значение по умолчанию (MySQL).LEAST()
LEAST(v1, v2, ...)Наименьшее из перечисленных значений.NULLIF()
NULLIF(a, b)Возвращает NULL, если аргументы равны.Числовые функции 10
ABS()
ABS(num)Модуль (абсолютное значение).CEIL()
CEIL(num)Округление вверх до целого.FLOOR()
FLOOR(num)Округление вниз до целого.MOD()
MOD(a, b)Остаток от деления.POWER()
POWER(base, exp)Возведение в степень.RANDOM() / RAND()
RANDOM()Случайное число от 0 до 1.ROUND()
ROUND(num, digits)Округляет число до заданного знака.SIGN()
SIGN(num)Знак числа: -1, 0 или 1.SQRT()
SQRT(num)Квадратный корень.TRUNC()
TRUNC(num, digits)Отбрасывает дробную часть без округления.