当前位置: 代码迷 >> Sql Server >> sum某些行,该如何解决
  详细解决方案

sum某些行,该如何解决

热度:78   发布时间:2016-04-24 09:25:15.0
sum某些行
现在有个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
  相关解决方案