sql - 根据条件求和sql中的列

标签 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 。 我尝试过以下方式

从“MY_TABLE”中选择 (SUM(UPVOTE)+ SUM(DOWNVOTE)) 作为“TOTAL”,其中“QUERYID”位于 (15, 7)'; 但是给我的是所有列的总和以及两个 queryId 的组合结果。

最佳答案

您需要一个 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

关于sql - 根据条件求和sql中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50674550/

相关文章:

sql - DB2 中 WHERE 子句求值顺序的优化

java - 如何将长字符串在 "),"处分割成行?

mysql - 获取每组中的第一行及其详细信息

mysql - 数据库设计所需的建议

sql - 在 SQL 中对 ENUM 使用 ILIKE

php - PHP 中的 SQL 数据库连接成功,但我无法查询

mysql - innoDB - 我应该关闭 innodb_flush_log_at_trx_commit 吗?

sql - Postgresql INSERT 要求主键值?

python - 使用列表创建 MySQL 表的列

sql - 选择具有多行的 1 行?