23

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

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:

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

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

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

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

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

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

Лига программистов

2.1K постов11.9K подписчиков

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

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

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

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

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества