Запрос результатов в одном временном окне, которого нет в другом - PullRequest
0 голосов
/ 17 мая 2018

Следующий запрос работает, но я хочу немного его изменить.

Как таковой, он выбирает всех клиентов из таблицы клиентов, которых нет в массиве, из предыдущей функции в этом файле (следовательно,«NOT IN ($ дилерNum»). Запускает запрос для всех других клиентов и извлекает их количество, если у них были заказы в течение 12 месяцев, предшествующих последним 6 месяцам (я работаю в 18-месячном окне).

Мне нужно немного изменить это. Я все еще хочу запустить это на любом клиенте, которого нет в предыдущем массиве. Однако я хочу получить количество любого клиента, у которого были заказы за последние 6 месяцев, но НЕ за 12 месяцевдо этого. По сути, показывает, что они были активны в течение по крайней мере того года / 12 месяцев и были активны в течение последних 6 месяцев.

Надеюсь, это имеет смысл. Вот существующий запрос, я просто неуверен, что лучший / самый логичный способ изменить мой ГДЕ для обработки этого

SELECT c.customerNumber
  FROM Customers C
INNER JOIN Orders G ON C.CustomerNumber = G.Customer
WHERE c.customerNumber NOT IN ($dealerNum)
    AND C.date BETWEEN CURRENT_DATE - 18 MONTHS AND CURRENT_DATE - 6 MONTHS
GROUP BY C.customerNumber
    HAVING COUNT(*) > 0

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Я бы написал так:

SELECT c.customerNumber
  FROM Customers C
WHERE c.customerNumber NOT IN ($dealerNum)
AND   c.customerNumber     IN (SELECT Customer FROM Orders where Date BETWEEN CURRENT_DATE -  6 MONTHS AND CURRENT_DATE           )
AND   c.customerNumber NOT IN (SELECT Customer FROM Orders where Date BETWEEN CURRENT_DATE - 18 MONTHS AND CURRENT_DATE - 6 MONTHS)
0 голосов
/ 17 мая 2018
select  c.customerNumber
from    Customers c
join    Orders o
on      c.CustomerNumber = o.Customer
where   c.customerNumber not in ($dealerNum)
group by
        c.customerNumber
having  count(case when o.date > current date - 6 months then 1 end) > 0
        and count(case when o.date between current date - 18 months and 
                            current_date - 6 months then 1 end) = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...