MySQL GROUP BY количество - PullRequest
       23

MySQL GROUP BY количество

2 голосов
/ 09 июля 2010

Таблица MySQL выглядит следующим образом (VoteID - это PK):

VoteID  VoteValue CommentID
1         -1         1
2         -1         1
3          1         1
4         -1         1
5          1         2
6          1         2
7         -1         2

Мне нужен результат:

CommentID    Plus    Minus
    1          1      3 
    2          2      1 

Сумма "Плюсов", сумма "Минусов", сгруппированных в CommentID Можно ли получить желаемое в одном выражении SQL?

Ответы [ 2 ]

4 голосов
/ 09 июля 2010
SELECT 
    CommentID,
    SUM(CASE WHEN VoteValue > 0 THEN 1 ELSE 0 END) AS PLUS,
    SUM(CASE WHEN VoteValue < 0 THEN 1 ELSE 0 END) AS MINUS

FROM 
    mytable

GROUP BY 
    CommentID
0 голосов
/ 09 июля 2010

Вам нужен запрос в строках:

SELECT CommentID,
    SUM(IF(VoteValue > 0, 1, 0)) AS Plus,
    SUM(IF(VoteValue < 0, 1, 0)) AS Minus
FROM yourTable
GROUP BY CommentID
ORDER BY CommentID
...