У меня есть следующая таблица, которую вы также можете найти в SQL Fiddle
здесь :
CREATE TABLE Orders (
Customer TEXT,
Order_Date DATE
);
INSERT INTO Orders
(Customer, Order_Date)
VALUES
("Customer A", "2017-05-23"),
("Customer A", "2019-01-03"),
("Customer A", "2019-02-15"),
("Customer A", "2019-02-16"),
("Customer B", "2018-09-10"),
("Customer B", "2019-01-09"),
("Customer C", "2016-09-04"),
("Customer C", "2019-02-12"),
("Customer C", "2019-02-20"),
("Customer D", "2017-03-15"),
("Customer D", "2019-02-17"),
("Customer D", "2019-02-19"),
("Customer D", "2019-02-20"),
("Customer E", "2019-02-03"),
("Customer E", "2015-10-12");
Как видно из таблицы, отображаются даты заказа от разных клиентов.
Я использую приведенный ниже SQL, чтобы получить unique count of orders
для клиентов, которые:
a) placed an order in February 2019 and
b) did not place an order in the 12 month before and
c) placed an order before this 12 months period
Ссылаясь на ответ здесь .
SELECT o.Customer,
MAX( o.Order_Date >= '2019-02-01' AND o.Order_Date < '2019-03-01' ) as num_feb_orders
FROM ORDERS o
GROUP BY o.Customer
HAVING SUM( o.Order_Date >= '2019-02-01' AND o.Order_Date < '2019-03-01' ) > 0 AND
SUM( o.Order_Date >= '2018-02-01' AND o.Order_Date < '2019-02-01' ) = 0 AND
SUM( o.Order_Date < '2018-02-01' ) > 0 ;
Все этодо сих пор работает нормально.
Однако теперь вместо GROUP BY
на основе клиента я хочу сделать GROUP BY
на основе Order_Date
, поэтому все latest order_dates in February
относятся к клиентамчто заполнить вышеуказанные критерии должны быть перечислены.Результат должен выглядеть следующим образом.
Order_Date UniqueOrders
2019-02-03 1 --> Customer E
2019-02-20 2 --> Customer C and Customer D
Что мне нужно изменить в своем коде, чтобы эта работа работала?