2016-09-28 60 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