Изучение этих команд пригодится при написании запросов.
1. Объединение записей с помощью Union & Union All
Все мы знаем, как работает «союз». Эта концепция аналогична той, что используется в теории множеств. Добавление объединения между двумя запросами приведет к получению отдельного набора записей.
UNION удаляет все дубликаты, существующие в результате обоих запросов, тогда как UNION ALL объединяет записи из запросов.
Union All быстрее, чем Union, так как не тратится лишнее время на обработку дубликатов.
2. Преобразование строк в столбцы с помощью ФИЛЬТРА.
Чаще всего мы сталкиваемся с ситуацией, когда значения строк необходимо использовать в качестве имен столбцов.
Чтобы преобразовать данные и отобразить их в нескольких столбцах, можно использовать ФИЛЬТР. Давайте посмотрим на пример ниже.
Item Qty Type ------------ ---------- ------------- desk 5 domestic bat 10 imported table 15 domestic table 25 imported desk domestic
Чтобы отобразить общее количество по элементам и типам из таблицы, используйте ФИЛЬТР!
Запрос:
Результат:
desk_from_domestic bat_from_domestic ------------------------- ------------------------- 5 10
3. Возврат ненулевых значений с помощью COALESCE.
Чтобы возвращать ненулевые значения из функций PostgreSQL, даже если данные в таблицах действительно содержат нулевые значения, используйте функцию COALESCE - она возвращает первый переданный ей ненулевой аргумент.
Обычный запрос
SELECT qty * 10 from purchases
Результат:
Result ---------- 50 100 150 250 null
Тот же запрос с COALESCE:
SELECT COALESCE(qty,0) * 10 as result from purchases
Значения в поле qty, содержащем нулевые значения, теперь будут нулями. Теперь можно выполнять математические операции с этими значениями!
Результат:
Result ---------- 50 100 150 250 0
4. Функции отладки с помощью RAISE NOTICE
Вы один из тех разработчиков, которые полагаются на console.log или print для отладки функций?
Если да, RAISE NOTICE сделает то же самое в PostgreSQL, и это очень удобно!
raise notice 'quantity: %', quantity;
5. Работа с датами с помощью EXTRACT
Хотите знать, как выполнять операции, подобные регулярным выражениям, с датами?
EXTRACT можно использовать для получения дня, месяца, года, часа и т. д. из поля, содержащего отметку времени или дату .
SELECT EXTRACT(DAY FROM TO_DATE(final_date, 'YYYY-MM-DD')) INTO final_day;
Заключительные примечания
Все эти команды, кроме RAISE NOTICE, также работают в SQL. Работа со сложными SQL-запросами и функциями может быть пугающей, но знание этих команд заставит вас почувствовать, что кодирование на SQL не так уж и сложно :)
Вот и все, ребята! Спасибо за прочтение.