【发布时间】:2019-11-04 08:26:03
【问题描述】:
我正在尝试运行一个看似简单的 SQL 查询,但我不明白应该使用什么机制来实现这一点。 我有下表:
| id | playcount | release_date |
| -- | --------- | ------------ |
| 1 | 47712 | 2019-12-27 |
| 2 | 626778 | 2017-07-23 |
| 3 | 827091 | 2019-09-12 |
| 4 | 66419 | 2015-09-05 |
| 5 | 58627 | 2016-09-12 |
| 6 | 60272 | 2017-09-06 |
| 7 | 1762582 | 2017-10-07 |
| 8 | 11280 | 2016-10-12 |
| 9 | 30890 | 2019-10-29 |
| 10 | 715173 | 2019-07-02 |
我想知道哪个 id 每年拥有最多 playcount。
在这个例子中,2019年playcount最大的id是3。
我正在寻找以下输出:
playcount_table
| year | playcount | id |
| ---- | --------- | -- |
| 2019 | 827091 | 3 |
| 2017 | 1762582 | 7 |
| 2016 | 58627 | 5 |
| 2015 | 66419 | 4 |
我通过以下查询成功获得了每年的最大播放次数:
select to_char(date_trunc('year', TO_DATE(p_table.release_date, 'YYYY-MM-DD')), 'YYYY-MM-DD') as year,
max(p_table.playcount) as playcounts
from playcount_table as p_table
group by year;
但我无法检索与此最大值 playcount 相关的 id。
你能帮我解决这个问题吗?
提前谢谢你,
【问题讨论】:
标签: sql postgresql datetime group-by greatest-n-per-group