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 函数(被认为更高级)很有趣。
我有一个 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 函数(被认为更高级)很有趣。