SQL'''以及''命令从原始数据获得不同的结果

时间:2017-01-26 16:33:54

标签: sql sum window-functions

我对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.这显然是不正确的。

有人可以帮帮我吗?任何帮助表示赞赏。

0 个答案:

没有答案