Небольшой набор не самых популярных SQL команд для решения повседневных задач. Добавляй в избранное, что бы возвращаться и подсматривать.

CONCAT_WS()

Функция CONCAT_WS соединяет все элементы, кроме первого, через указанный разделитель. Разделитель указывается первым аргументом. Значения NULL игнорируются.

select
concat_ws('; ', 123, null, 456, 'Иван')

123; 456; Иван

Функцию удобно использовать , когда из нескольких столбцов нужно получить строку.

LEFT() и RIGHT()

Функция LEFT и RIGHT возвращают первые или последние n символом в строке. Если значение n меньше нуля, то возвращаются все символы, кроме n — последних/первых.

select
	RIGHT('Я работаю в IT подразделении', -12)
#	IT подразделении

select LEFT(‘Интересная статья про SQL’, 17)

Интересная статья

Эти функции удобно использовать когда нужно выделить подстроку из большого текста.

TRIM()

Функция TRIM убирает пробелы (или другие указанные символы) в начале и в конце строки.

select
	TRIM('     SQL нужен аналитику данных     ')
#	SQL нужен аналитику данных

select TRIM(’:-!’ from ’ Артикул: 00115, !!Шоколадка - Марс ‘, 17)

Артикул 00115, Шоколадка Марс

Функция TRIM позволяет удобно приводить текст в аккуратный вид. Аналог этой функции в Python — метод strip.

EXTRACT()

Функция EXTRACT используется для извлечения части даты, например месяца. Синтаксис: EXTRACT(извлекаемая часть from дата).

select
	EXTRACT(MONTH from "1988-02-06")
#	2

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

COALESCE()

Функция COALESCE возвращает первый попавшийся аргумент, отличный от NULL.

select
	COALESCE(col_A, col_B, col_C, col_D) from table_XXX

Запрос вернет первый col_X, который будет не NULL.

Примечание: Если все значения NULL, то вернется NULL.

Эту функцию нужно использовать как можно чаще, потому что в БД могут быть пропуски, которые при вычислениях мы даже не заметим.

NULLIF()

Функция NULLIF(value1,value2) возвращает NULL, если value1 равен value2, иначе возвращает value1.

NULLIF(debit,credit)

Если дебит равен кредиту, то функция NULLIF вернет NULL,

иначе вернет debit.

Эту функцию удобно использовать, например, для поиска расхождений.

NTH_VALUE()

Оконная функция NTH_VALUE возвращает n-ое значение, вычисленное в данном окне. Если такой строки нет, то вернется NULL.

select
	DISTINCT department_id, NTH_VALUE(salary,2) over (
  		PARTITION BY department_id
      	ORDER BY salary DESC
    ) AS SecondSalary
from employees

Данный запрос вернет для каждого отдела

информацию о второй по величине зарплате

Функцию NTH_VALUE удобно использовать для решения задач на поиск N-ого по величине значения.