例えば下記のようなデータがあったとする。
mysql> SELECT * FROM users;
+------+--------------------+------+-------+
| id | name | age | score |
+------+--------------------+------+-------+
| 1 | 宇佐美いちか | 13 | 21 |
| 2 | 有栖川ひまり | 13 | 100 |
| 3 | 立神あおい | 13 | 96 |
| 4 | 琴爪ゆかり | 17 | 80 |
| 5 | 剣城あきら | 17 | 75 |
| 6 | キラ星シエル | 13 | 53 |
+------+--------------------+------+-------+
6 rows in set (0.00 sec)
score が
だとして、それぞれのランクに何人いるのか?みたいなSELECTを書く。
mysql> SELECT
COUNT( CASE WHEN score >= 80 THEN 1 END) as 'S評価',
COUNT( CASE WHEN score >= 50 AND score < 80 THEN 1 END) as 'A評価',
COUNT( CASE WHEN score >= 30 AND score < 50 THEN 1 END) as 'B評価',
COUNT( CASE WHEN score < 30 THEN 1 END) as 'C評価'
FROM users;
+---------+---------+---------+---------+
| S評価 | A評価 | B評価 | C評価 |
+---------+---------+---------+---------+
| 3 | 2 | 0 | 1 |
+---------+---------+---------+---------+
1 row in set (0.00 sec)