upVote DownVote
|true | 0
|true | 0
|0 | true
|true | 0
|true | 0
|0 | true
我的sql表中有上面这样的列。我想计算upVotes的总数 - Downvotes就像stackOverflow一样。但由于某种原因,我很难使用sql语法。
SELECT COALESCE(sum(CASE WHEN upvote THEN 1 ELSE 0 END),0) from Ratings WHERE TopicID = :topicsID
我在某处看到了上面的sql查询示例,但不确定我是朝着正确的方向前进。感谢帮助
答案 0 :(得分:3)
我猜您需要在sum(upvote)
和sum(DownVote)
SELECT sum(upvote) - sum(DownVote)
from Ratings
WHERE TopicID = :topicsID
小提琴:http://sqlfiddle.com/#!9/b1644c/8
我认为一个具有布尔值的vote
列就足够了。
因为True可以表示upvote
,False可能表示DownVote
CREATE TABLE Ratings
(
Vote BOOL
);
INSERT INTO Ratings VALUES
(TRUE),
(TRUE),
(0),
(0),
(TRUE),
(TRUE),
(0);
SELECT sum(CASE WHEN Vote THEN 1 ELSE 0 END) -
sum(CASE WHEN Vote THEN 0 ELSE 1 END) as vote
from Ratings
WHERE TopicID = :topicsID
答案 1 :(得分:0)
select COUNT(*) from ratings WHERE upvote=true AND TopicID = :topicsID ?