假设我有这张桌子
表(a,b,c,d).数据类型并不重要.
我想做这个
select a as a1,b as b1,c as c1,
(select sum(d) from table where a=a1 and b=b1) as total
from table
group by a,b,c
Run Code Online (Sandbox Code Playgroud)
...但我找不到方法(sqldeveloper一直在抱怨"未找到来自子句".)
有办法吗?可能吗?
SELECT a as a1,b as b1,c as c1,
(
SELECT SUM(d)
FROM mytable mi
WHERE mi.a = mo.a
AND mi.b= mo.b
) as total
FROM mytable mo
GROUP BY
a, b, c
Run Code Online (Sandbox Code Playgroud)
重写它更简单有效:
SELECT a AS a1, B AS b1, c AS c1, SUM(SUM(d)) OVER (PARTITION BY a, b) AS total
FROM mytable
GROUP BY
a, b, c
Run Code Online (Sandbox Code Playgroud)
请注意SUM(SUM(d))这里.
最里面的SUM是聚合函数.它计算SUM(d) a-b-c-wise.
最外层SUM是分析函数.它将预先计算的SUM(d)'s' a-b相加,并将值与每行一起返回.
| 归档时间: |
|
| 查看次数: |
14917 次 |
| 最近记录: |