SQL queries

SQL для аналитика данных ч.1

Небольшой набор не самых популярных 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-ого по величине значения.


Опубликовано

в

от

Комментарии

Добавить комментарий