0

我正在尝试创建一个摘要查询,该查询返回每个组的数量总和以及该组中数量最大的行的描述。

例如,如果表如下所示:

GROUP  QTY   DESC
-----  ---   ----
1      23    CCC
1      42    AAA
1      61    BBB

2      11    ZZZ
2      53    XXX
2      32    YYY

查询将返回:

1     125    BBB   (desc from row with largest qty for group 1)
2      95    XXX   (desc from row with largest qty for group 2)

谢谢!

4

1 回答 1

0

窗口函数row_number()是这种查询的朋友。它为值分配一个序号。然后,您可以在聚合中使用此信息:

select group, sum(qty), max(case when seqnum = 1 then desc end)
from (select t.*,
             row_number() over (partition by group order by qty desc) as seqnum
      from t
     ) t
group by group

顺便说一句,group并且desc是糟糕的列名称,因为它们与保留字冲突。您应该在查询中重命名它们或用双引号将它们括起来。

于 2013-05-07T23:12:02.213 回答