执行聚合函数时如何检索其他列?

米格尔·蒙托亚

我一直在尝试从表中检索其他列,在该表中我正在执行聚合函数以按日期获取最小数目,这是数据的示例:

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
...

尽管quality0和quality1具有相同的含义ask,但quality应选择1,因为它的ask_volume值较高。

我尝试过经典的:

SELECT date, min(ask) FROM table GROUP BY date;

但是添加ask_volume到列列表将迫使我也将其添加到列列表中GROUP BY,从而弄乱了结果。

问题是:

  1. 如何获得结果中显示ask_volume的最小值的对应ask
  2. 而且,如果同一条记录上有两个ask值相同的记录date,我如何ask_volume显示一个具有最高值的记录?

我使用PostgreSQL,但是来自其他数据库的SQL也将帮助我理解这个想法。

专线小巴

在标准SQL中,您将使用窗口函数:

select *
from (
    select t.*, row_number() over(partition by date order by ask, ask_volume desc) rn
    from mytable 
) t
where rn = 1

在Postgres中,这更适合distinct on

select distinct on (date) *
from mytable
order by ask, ask_volume desc

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

选择聚合函数和所有其他列

如何在 SQL 中按某些列聚合而不是按其他列聚合

javascript - 在@Url.Action 之后如何执行其他函数

基于其他列的 TSQL 聚合值

聚合函数以保留特定值,具体取决于其他列

如何在使用聚合函数时查看列

如何按一列聚合以建立行,而其他列的聚合则转换为新列?

(JavaScript) 在从其他函数回调时执行一个函数

Pandas:如何聚合具有多个功能的列并将结果添加为其他列?

R:如何在保留其他列的同时聚合一些列

大熊猫-如何聚合两列并保留所有其他列

在执行其他类型的聚合时获得最高类别

jQuery 停止其他函数的执行?

如何让函数聚合“忽略”列?

在其他列中搜索值时检索表的主键值

仅当其他行具有相同的列值时,MySQL 查询才检索行

如何在具有其他构造函数参数的类内检索HubContext(SignalR)?

如何在Pandas Groupby中消除聚合列的其他行

如何根据 SQL 查询中其他聚合列的日期获取最后一条记录

如何获取sql中唯一列的MAX值并聚合其他?

如何在聚合子查詢之前選擇其他列

如何基于多个组聚合和平均各种行,同时保持其他列不变

如何检索Google表格中其他列未包含的列中的值

在其他组件中更改输入变量时执行函数

通过聚合函数中其他列(的第一个值)对不同的列值进行排序

执行jps命令时的其他事项

分组时如何选择表的其他列?

使用dplyr时如何保留其他列?

创建新列时如何引用其他文件?