mysql |分组和计数行

时间:2014-09-22 08:57:40

标签: php mysql sql

我有一张桌子,想要计算价值。我的表:

表投票

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

投票:-1 - 向下; +1 - Up;

我想得到这样的东西:

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获取结果? 谢谢!

3 个答案:

答案 0 :(得分:2)

我想你的问题是如何区分上下投票。

您希望按类型分组(听起来像投票/投票ID),然后选择上下投票。可以使用CASEIFCOUNTSUM结合使用。

COUNT不计算NULL值,因此我建议在COUNT s中包含两个IF

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

答案 1 :(得分:0)

你可以写

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


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

以上将为您提供所需的结果计数。

答案 2 :(得分:0)

这将有效

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