现在有个table,简化如下:
e p v
e1 p1 v1
e1 p2 v2
e1 p3 v3
e2 p4 v4
e2 p5 v5
e2 p6 v6
...
想算出对于每一个e,其对应p和v在总值中的所占的比例,即
e p v ratio
e1 p1 v1 v1/(v1+v2+v3)
e1 p2 v2 v2/(v1+v2+v3)
e1 p3 v3 v3/(v1+v2+v3)
e2 p4 v4 v4/(v4+v5+v6)
e2 p5 v5 v5/(v4+v5+v6)
e2 p6 v6 v6/(v4+v5+v6)
...
我知道可以通过sum和group by算出一个表格
e sum
e1 v1+v2+v3
e2 v4+v5+v6
...
然后再这个表格和原来的表格做join来算ratio,但是我这个原始表格其实很大,担心多算一个表格耗时很长。
所以想请教各位有没有可能,可以按照条件来sum某些行,比如我要sum所有e1的总值,又要sum所有e2的值。
------解决思路----------------------
SELECT e , p , v , v / SUM(v) OVER(PARTITION BY e) FROM table