2014-09-22 20 views
1

我有一個表並想計算值。我的表:mysql |組和行數

表票

vote type 
1  1 
-1  1 
1  0 
-1  0 
1  0 
-1  1 
1  0 

投票:-1 - 羽絨服; +1 - 上;

我希望得到的東西是這樣的:

Count votes up type 1: 1 
Count votes down type 1: 2 

Votes up type 0: 3 
Votes down type 0: 1 

Sum votes type 1: 1+(-1)+(-1) = -1 
Sum votes type 0: 1+(-1)+1+1 = 2 

是否有可能得到使用單個查詢mysql的結果嗎? 謝謝!

回答

2

我想你的問題是如何區分這裏的上下選票。

你想按類型分組(這聽起來像一個投票/投票ID),然後只是選擇上下選票。可以使用CASEIF結合COUNTSUM完成。

COUNT不計數NULL值,所以我建議將兩個COUNT s包含在IF s中。

SELECT 
type, 
COUNT(IF(vote = -1, TRUE, NULL)) AS down, 
COUNT(IF(vote = 1, TRUE, NULL)) AS up 
FROM votes 
GROUP BY type 

SQL小提琴:http://sqlfiddle.com/#!2/36008/1/0

0

你可以寫

select count(*) from table where type = 1 and vote = -1 


select count(*) from table where type = 1 and vote = 1 

上述會給你你想要的結果計數。

0

這將工作

select sum(vote),type from table group by type;