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

На одном столбце (например, c0) Я хотел бы сделать что-то вроде:

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

Однако, как я делаю то же самое для c1, c2, c3, и т.д ... в одном запросе?

+0

Вы хотите, количество строк для каждого с или строки агрегации? – 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

Смежные вопросы