首页 > 解决方案 > 根据条件对sql中的列求和

问题描述

我想根据以下条件对列值求和

 USERID | QUERYID | UPVOTE | DOWNVOTE
   1    | 15      | 1      |  0
   0    | 15      | 0      | -1
   6    | 15      | 0      | -1
   1    | 7       | 1      |  0 
   8    | 7       | 1      |  0

我有兴趣得到这个要求的结果,因为QUERYID = 15它应该返回我 -1 作为 (SUM(UPVOTE) + SUM(DOWNVOTE)) 并且QUERYID = 7它应该通过使用与上述相同的逻辑给我 2。我尝试过以下方式

select (SUM(UPVOTE)+ SUM(DOWNVOTE)) as "TOTAL" from "MY_TABLE" where "QUERYID" in (15, 7)'; 但是给我所有列的总和以及两个queryId的组合结果。

标签: sql

解决方案


您需要一个group by子句来为每个唯一值生成单独的结果queryid

SELECT   (SUM(upvote) + SUM(downvote)) AS "TOTAL"
FROM     mytable
-- Possibly also add a where clause here if you only want to do this for some queryids
GROUP BY queryid

推荐阅读