繁体   English   中英

如何在子查询上使用聚合函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM