我有一个名为table1:的表
id created_date
1001 2020-06-01
1001 2020-01-01
1001 2020-07-01
1002 2020-02-01
1002 2020-04-01
1003 2020-09-01
我正在尝试编写一个查询,它为我提供了一个不同id的列表,其中包含它们最早的created_date,以及每个id的行数:
id created_date count
1001 2020-01-01 3
1002 2020-02-01 2
1003 2020-09-01 1
我设法编写了一个窗口函数来获取最早的日期,但我很难确定count语句在其中的位置:
SELECT
id,
created_date
FROM ( SELECT
id,
created_date,
row_number() OVER(PARTITION BY id ORDER BY created_date) as row_num
FROM table1)
) AS a
WHERE row_num = 1
您将使用聚合:
select id, min(create_date), count(*)
from table1
group by id;
我觉得很有趣的是,当低聚合能力足够时,您想要使用窗口函数——它被认为是更高级的。