我正在尝试创建一个摘要查询,该查询返回每个组的数量总和以及该组中数量最多的行中的描述。
例如,如果表格如下所示:
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)
谢谢!
答案 0 :(得分: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
是列的糟糕名称,因为它们与保留字冲突。您应该重命名它们或将它们用查询中的双引号括起来。