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-запроса выше, но не уверен, что я направляюсь в правильном направлении. Приветствуется
Думаю, вам нужно вычесть 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
Сценарий: http://sqlfiddle.com/#!9/727c2b/3
select COUNT(*) from ratings WHERE upvote=true AND TopicID = :topicsID ?
true | true
илиfalse | false
?