【发布时间】:2018-05-30 11:36:34
【问题描述】:
我有下表。
我想汇总小时数并按 id 分区,然后每个 custid 取 Max 小时数。以下是我到目前为止所拥有的。
表A
id custid projid hours
1 1010 Yellow 1
1 1011 Yellow 2
1 1012 Yellow 5
1 1010 Yellow 5
SQL:
select SUM(HOURS)OVER (PARTITION BY ID ORDER BY cust) AS TOTAL_HRS
from tablea
预期输出:上述 SQL 未捕获 MAX hours
id custid projid hours
1 1010 Yellow 6
【问题讨论】:
-
您的问题缺少问题。
-
太快了!我不确定为什么它第一次没有显示,但问题已编辑。
-
另外,您为什么期望该单行中的数据?你向我们扔了一只兔子。
-
要对分析执行聚合,只需将分析包装在子查询/派生的 dable/cte 中,然后选择最大总和。您需要先计算分析结果,然后才能获得最大总和,因此有理由将其包装为派生表。 SQL 的操作顺序使您无法同时执行这两种操作;因此引入了派生表/cte。
标签: sql oracle window-functions