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