23

3 возможности PostgreSql, которые удивили меня больше всего!

3 возможности PostgreSql, которые удивили меня больше всего! Программирование, IT, Собеседование, Программист, SQL, Postgresql, Oracle, Тестирование, Длиннопост

1. Есть DISTINCT ON

В PostgreSQL оператор DISTINCT можно использовать не только после слова SELECT для вывода уникальных строк всего набора данных, и не только внутри агрегатных функций, но ещё и для вывода лишь одной строки из нескольких, которые имеют одинаковое значение в указанном столбце (столбцах). В этом случае, с помощью ORDER BY можно определить какую именно из выводящихся строк с одинаковым значением в указанном столбце или столбцах, нужно вывести.

В отличие от обычного DISTINCT, который убирает дубликаты по всем полям в SELECT, DISTINCT ON (<столбец или набор столбцов>) выбирает первую строку для каждой группы значений в указанном в скобочках столбце (или наборе столбцов).

Так можно вывести последний заказ каждого пользователя:

SELECT DISTINCT ON (user_id) user_id, order_id, order_date, amount FROM orders ORDER BY user_id, order_date DESC;

2. Можно выводить строки без столбцов

Это ещё одна особенность PostgreSQL. Запросы SELECT, в которых не указаны ни поля после слова SELECT, ни звёздочка, прекрасно выполняются. Пример на PostgreSql версии 16.5:

3 возможности PostgreSql, которые удивили меня больше всего! Программирование, IT, Собеседование, Программист, SQL, Postgresql, Oracle, Тестирование, Длиннопост

И даже chatgpt об этом (пока ещё) не знает.

3. С помощью GENERATE_SERIES можно на лету генерировать динамические таблицы чисел, дат, дней недели и другую информацию

Вывести дни недели можно следующим способом:

3 возможности PostgreSql, которые удивили меня больше всего! Программирование, IT, Собеседование, Программист, SQL, Postgresql, Oracle, Тестирование, Длиннопост

А так, например, можно вывести все числа января и февраля:

3 возможности PostgreSql, которые удивили меня больше всего! Программирование, IT, Собеседование, Программист, SQL, Postgresql, Oracle, Тестирование, Длиннопост

Продолжая предыдущий пример, можно добавить вывод количеств посещений сайта prime-soft.biz в выводимые даты:

3 возможности PostgreSql, которые удивили меня больше всего! Программирование, IT, Собеседование, Программист, SQL, Postgresql, Oracle, Тестирование, Длиннопост

Напиши под постом что удивило в PostgreSql именно тебя. Буду очень рад, если поделишься опытом! И, конечно, буду рад, твоему лайку моей статье! А ещё у меня есть Телеграм канал, в котором регулярно решаем задачи по SQL с собеседований и реальной практики!

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества