SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » PostgreSQL » Помогите с запросом (Запрос на выбор данных)
Помогите с запросом [сообщение #1767] Tue, 07 March 2023 20:11 Переход к следующему сообщению
hondukk в настоящее время не в онлайне  hondukk
Сообщений: 1
Зарегистрирован: March 2023
Junior Member
Добрый день, помогите с запросом, сижу и туплю. Есть таблица SALES, в которой данные по следующим полям: VK - признак типа клиента, date (дата в формате день, месяц, год) и соответственно айдишник записи сделки. Есть 2 параметра, которые задают дату начала периода и дату его окончания. Требования: найти количество продаж за период (посчитать строки записей), найти количество за период с лагом в 30 дней или в 1 месяц. Если количество еще посчитал, то данными за прошлый месяц затык. В оракле была функция add_month, а тут аналога подобрать не могу. Пока идея нерабочая была такая:

SELECT VK AS attr,
COUNT(CASE WHEN date BETWEEN CUR_START AND CUR_END THEN 1 ELSE 0 END) AS CNT,
COUNT(CASE WHEN date BETWEEN add_months(CUR_START, -12) AND add_months(CUR_END, -12) THEN 1 ELSE 0 END) AS CNT_PREV
FROM SC.SALES
WHERE (date BETWEEN CUR_START AND CUR_END OR date BETWEEN add_months(CUR_START, -12) AND add_months(CUR_END, -12))
GROUP BY VK

Помогите советом, как сие лучше переделать
Re: Помогите с запросом [сообщение #1775 является ответом на сообщение #1767] Thu, 09 March 2023 13:23 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 769
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
добавляй/вычитай 30 напрямую, без функций.
date'2001-10-01' - 7 = date'2001-09-24'
Re: Помогите с запросом [сообщение #2834 является ответом на сообщение #1775] Thu, 27 July 2023 19:30 Переход к предыдущему сообщениюПереход к следующему сообщению
Горбатый ёж в настоящее время не в онлайне  Горбатый ёж
Сообщений: 19
Зарегистрирован: July 2023
Junior Member
Можно использовать interval.
Но на форуме конечно голяк...
Re: Помогите с запросом [сообщение #2842 является ответом на сообщение #2834] Sat, 29 July 2023 12:58 Переход к предыдущему сообщениюПереход к следующему сообщению
LM в настоящее время не в онлайне  LM
Сообщений: 12
Зарегистрирован: July 2023
Junior Member
SELECT date '2030-01-20' + interval '1 month';
Result:
2030-02-20 00:00:00

Соответственно:

Oracle:
add_months(CUR_START, -12)
PostgreSQL:
CUR_START - interval '12 month'
P.S. Cюда кто-нибудь кроме ежа ещё заходит?
Re: Помогите с запросом [сообщение #2858 является ответом на сообщение #2842] Mon, 31 July 2023 15:28 Переход к предыдущему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 769
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
заходят.
иногда.
Предыдущая тема: Хранимые процедуры
Следующая тема: Как сделать чтобы PG сравнивал строки без учета регистра (как MSSQL)
Переход к форуму:
  


Текущее время: Fri Mar 29 01:55:06 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00562 секунд