Select table 中具有重复 ID 的最早日期和计数行

Select earliest date and count rows in table with duplicate IDs

我有一个 table 叫 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

我正在尝试编写一个查询,为我提供一个包含最早 created_date 的不同 ID 的列表,以及每个 ID 具有的行数:

  id   created_date  count
1001     2020-01-01      3
1002     2020-02-01      2
1003     2020-09-01      1

我设法编写了一个 window 函数来获取最早的日期,但我无法确定将计数语句放在何处:

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;

当低级聚合就足够时,我觉得您想使用 window 函数(被认为更高级)很有趣。