[英]How to use an aggregate function on a sub-query
在类似问题上,我还没有找到答案。 如何在子查询中使用聚合函数,例如
当我在数据库中查询一个名为ratioPnLTable的表时,如下所示:
SELECT DISTINCT strat_id, ratio, root FROM ratioPnltable
WHERE totalPnl IN (SELECT DISTINCT MAX(TotalPnl) FROM ratioPnlTable
GROUP BY strat_id)
我得到以下结果:
strat_id ratio root
1 2.6 AD
1 2.7 AD
1 2.8 AD
2 1.4 ED
2 1.5 ED
2 1.6 ED
3 1.9 HG
3 2.0 HG
3 2.1 HG
相反,我只想像这样具有比率的最小值:
strat_id ratio root
1 2.6 AD
2 1.4 ED
3 1.9 HG
根据示例结果,您可以使用row_number()
进行任何操作,而无需进行任何聚合:
select t.*
from (select t.*,
row_number() over (partition by strat_id order by ratio) as seqnum
from ratioPnltable t
) t
where seqnum = 1;
这不应该只是MIN()语句吗? 除非根可以不同。
SELECT
strat_id,
MIN(ratio) ratio,
root
FROM
ratioPnltable
WHERE
totalPnl IN (query)
GROUP BY
strat_id,
root
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.