select * 来自 [table] 其中 min(date) > 特定日期
select * from [table] where min(date) > certain date
我有一个 table 与客户。每个客户都有几个已支付价格的订单,并且 he/she 天订购了一件商品。我只希望客户的第一笔订单是在某个日期之后
订单 table 看起来像这样:
id | customer | item | price | date
--------------------------------------------
1 | a | a2 | 50 | 2018-07-03
2 | b | a5 | 30 | 2019-12-06
3 | c | a3 | 20 | 2020-01-14
4 | a | a2 | 23 | 2017-07-12
5 | f | a1 | 34 | 2018-10-03
6 | c | a1 | 90 | 2018-03-03
7 | b | a2 | 56 | 2020-02-03
8 | a | a2 | 52 | 2019-05-03
SELECT customer FROM orders WHERE min(date) > TO_DATE('2018-09-01', 'YYYY-MM-DD')
我只希望第一个订单在 2018-09-01 之后的客户,最小(日期)> TO_DATE('2018-09-01', 'YYYY-MM-DD')
结果应该是客户:
b
f
使用聚合:
SELECT customer
FROM orders o
GROUP BY customer
HAVING min(date) > DATE '2018-09-01';
您不需要将日期转换为字符串进行比较。根据您的数据库,可能不需要 DATE
。
我有一个 table 与客户。每个客户都有几个已支付价格的订单,并且 he/she 天订购了一件商品。我只希望客户的第一笔订单是在某个日期之后
订单 table 看起来像这样:
id | customer | item | price | date
--------------------------------------------
1 | a | a2 | 50 | 2018-07-03
2 | b | a5 | 30 | 2019-12-06
3 | c | a3 | 20 | 2020-01-14
4 | a | a2 | 23 | 2017-07-12
5 | f | a1 | 34 | 2018-10-03
6 | c | a1 | 90 | 2018-03-03
7 | b | a2 | 56 | 2020-02-03
8 | a | a2 | 52 | 2019-05-03
SELECT customer FROM orders WHERE min(date) > TO_DATE('2018-09-01', 'YYYY-MM-DD')
我只希望第一个订单在 2018-09-01 之后的客户,最小(日期)> TO_DATE('2018-09-01', 'YYYY-MM-DD')
结果应该是客户: b f
使用聚合:
SELECT customer
FROM orders o
GROUP BY customer
HAVING min(date) > DATE '2018-09-01';
您不需要将日期转换为字符串进行比较。根据您的数据库,可能不需要 DATE
。