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。我尝试过以下方式
select (SUM(UPVOTE)+ SUM(DOWNVOTE)) as "TOTAL" from "MY_TABLE" where "QUERYID" in (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
推荐阅读
- angular - 尝试设置需要特定模式的 Angular 2 输入验证
- c++ - 在 NVidia 与 Intel 显卡上链接着色器时出错
- r - R - 链接矩阵行 - 使代码更快
- java - Linux 上的 JVisualVm
- dart - 迭代颤动图中的元素
- python - PyGeodesy 和 GeographicLib 在 Python 2.7 中可用,但在 Python 3.6 中不可用
- ios - Fabric Crashlytics 中缺少版本
- angular - Typescript,TypeError 不是函数,在同一个类中调用另一个方法
- reactjs - AsyncTypeahead 选项在搜索后立即消失
- android - 无法使用“node fcm-notification”显示 FCM 通知