2016-09-28 69 views
-1
mysql> show columns from MYTABLE; 
+-------+--------------+------+-----+---------+-------+ 
| Field | Type   | Null | Key | Default | Extra | 
+-------+--------------+------+-----+---------+-------+ 
| x  | int(11)  | NO | PRI | NULL |  | 
| y  | int(11)  | NO | PRI | NULL |  | 
| c0 | decimal(3,1) | NO |  | NULL |  | 
| c1 | decimal(3,1) | NO |  | NULL |  | 
| c2 | decimal(3,1) | NO |  | NULL |  | 
| c3 | decimal(3,1) | NO |  | NULL |  | 
| c4 | decimal(3,1) | NO |  | NULL |  | 
| c5 | decimal(3,1) | NO |  | NULL |  | 
| c6 | decimal(3,1) | NO |  | NULL |  | 
| c7 | decimal(3,1) | NO |  | NULL |  | 
| c8 | decimal(3,1) | NO |  | NULL |  | 
| c9 | decimal(3,1) | NO |  | NULL |  | 
+-------+--------------+------+-----+---------+-------+ 

我想为以'c'开始的每列都超过特定阈值(比如说20.0)的值进行计数。对于mysql中每一列的阈值计数值

对单个列(如CO)我会做这样的事情:

SELECT COUNT(*) FROM MYTABLE WHERE c0 > 20.0; 

但是,我该怎么做了C1,C2,C3等一样...在一个单一的查询?

+0

你想为每个C或聚合行计数行? – Sevle

+0

@Sevle,我想为单个查询中的每列c计数。所以,例如,我会分别得到c0,c1,c2 5,8,13。 – user1472709

回答

1

我认为这会为你工作:

SELECT SUM(IF(c0 > 20, 1, 0)) AS count_0, SUM(IF(c1 > 20, 1, 0)) AS count_1 
FROM table 
+0

这确实有效。但是,它需要分别指定每个列。我想这是一个小的代价。 – user1472709

相关问题