我对SUM OVER PARTITION BY
的查询非常困难。
我有一个名为entity_table的表:
---------------------------------
entity_id other_attributes...
1 xxxx
2 xxxx
3 xxxx
---------------------------------
和另一个名为score_table的表
-------------------------------
entity_id score date
1 0 20170101
1 5 20170101
2 5 20170101
2 0 20170101
3 5 20170101
-------------------------------
我的查询如下:
select someother_attributes
, total_score = sum(score) over (partition by entity_id)
, more_other_attributes
from entity_table
left join score_table
on entity_table.entity_id = score_table.entity_id
where date = 20170101
为了确认我从上面的查询中得到了正确的结果,我进行了一些现场测试。例如,对于entity_id = 10:
select * from score_table where date = 20170101
,结果是
--------------------------------
entity_id score date
10 0 20170101
10 5 20170101
10 0 20170101
10 0 20170101
10 5 20170101
--------------------------------
所以得分总和是10.然后我在我的大查询中取相应的实体,我发现总和是30.这显然是不正确的。
有人可以帮帮我吗?任何帮助表示赞赏。