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