【发布时间】:2020-09-27 15:08:09
【问题描述】:
我一直在尝试从我正在执行聚合函数以按日期获取最小数量的表中检索其他列,这是数据的一个示例:
id resource date quality ask ask_volume
1 1 2020-06-08 10:50 0 6.9 5102
2 1 2020-06-08 10:50 1 6.8 2943
3 1 2020-06-08 10:50 2 6.9 25338
4 1 2020-06-08 10:50 3 7.0 69720
5 1 2020-06-08 10:50 4 7.0 9778
6 1 2020-06-08 10:50 5 7.0 297435
7 1 2020-06-08 10:40 0 6.6 611
8 1 2020-06-08 10:40 1 6.6 4331
9 1 2020-06-08 10:40 2 6.7 1000
10 1 2020-06-08 10:40 3 7.0 69720
11 1 2020-06-08 10:40 4 7.0 9778
12 1 2020-06-08 10:40 5 7.0 297435
...
这是我想要得到的结果,所以我可以对其进行加权平均:
date ask ask_volume
2020-06-08 10:50 6.8 2943
2020-06-08 10:40 6.6 4331
...
虽然quality 0 和quality 1 都具有相同的ask,但应选择quality 1,因为它的ask_volume 更高。
我已经尝试过经典:
SELECT date, min(ask) FROM table GROUP BY date;
但是将ask_volume 添加到列列表会迫使我将其添加到GROUP BY,从而弄乱结果。
问题是:
- 如何才能得到结果中显示的最小
ask对应的ask_volume? - 而且,如果在同一个
date上有两条具有相同ask值的记录,如何让ask_volume显示具有最高值的记录?
我使用 PostgreSQL,但来自不同数据库的 SQL 也可以帮助我理解这个想法。
【问题讨论】:
标签: sql postgresql date greatest-n-per-group