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 Переход к предыдущему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 287
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
добавляй/вычитай 30 напрямую, без функций.
date'2001-10-01' - 7 = date'2001-09-24'
Предыдущая тема: Операции над массивами
Следующая тема: Сделать 2 поля уникальными, для определённого значения одного из них.
Переход к форуму:
  


Текущее время: Sat Mar 25 16:10:58 MSK 2023

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