我有一些包含一些列的表。如果行为true或false,则列中的一个寄存器。例如,如果你输了游戏,则将其设置为0,否则为1.
我想要计算的是行中1的数量。该表如下所示:
+-----------+
|game_status|
|-----------|
|00000000 |
|-----------|
|00000000 |
|-----------|
|00000001 |
|-----------|
|00000001 |
|-----------|
|00000001 |
|-----------|
| ... |
+-----------+
因此,如果您手工计算,结果将是: 从0开始:
lost(0) -> 0 - 1 =
lost(0) -> -1 - 1 =
won(1) -> -2 + 1 =
won(1) -> -1 + 1 =
won(1) -> 0 + 1 =
结果= 1
那么如何使用mysql查询获得此结果?我尝试过使用count但它会计算所有的1或0。
提前致谢。
当我接受答案时,我觉得有点困惑,我为此道歉。我想我忘了说的是查询的结果应该是这样的:
+--------+------+
| 1 | -1 |
|--------|------|
| 2 | -2 |
|--------|------|
| 3 | -1 |
+---------------+
增量列是玩游戏的数量......
答案 0 :(得分:1)
你可以计算胜利并减去输掉的数量。
select (select count(status) from table1 where status = 1) -
(select count(status) from table1 where status = 0)
答案 1 :(得分:0)
尝试:
SELECT COUNT(DISTINCT CASE WHEN Column = 0 THEN 1 END) AS TotalZeros,
COUNT(DISTINCT CASE WHEN Column = 1 THEN 1 END) AS TotalOnes
FROM YourTable
或者更简单的方法是,如果您的列只包含 0 或 1 ,只需选择其中任何一个的计数并从总行中减去它将为您提供其他人的数量。
答案 2 :(得分:0)
使用SUM而不是COUNT。 COUNT查找项目数量而不管它们的值,SUM实际上总计了整数值。 看这里参考 http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
答案 3 :(得分:0)
SELECT sum(CASE game_status WHEN 1 THEN 1 ELSE -1 end) FROM table_name;