1

私はこのようないくつかのデータを持っています:

+----+--------+-------+
| id | height | width |
+----+--------+-------+
|  1 |   1000 |   300 |
|  2 |   1024 |   330 |
|  3 |    600 |   200 |
|  4 |    624 |   311 |
|  5 |    724 |   511 |
|  6 |    300 |   200 |
+----+--------+-------+

より多くの行があります。

次のようなクエリを実行したいと思います。

Count how many rows have a height between 0 and 400, between 401 and 600, between 601 and 1000, and 1000+

この場合、次のようなものを返すようにします。

+-------+---------+----------+-------+
| 0-400 | 401-600 | 601-1000 | 1000+ |
+-------+---------+----------+-------+
|     1 |       1 |        3 |     1 |
+-------+---------+----------+-------+

範囲をハードコーディングします。

現在、範囲ごとにクエリを実行することを計画していますが、より良い方法はありますか?

4

2 に答える 2

3
select  sum(case when height between 0 and 400 then 1 end) as [0-400]
,       sum(case when height between 401 and 600 then 1 end) as [401-600]
,       ...
from    YourTable
于 2012-04-15T13:25:05.137 に答える
2

次のようなものを試してください。

select sum(if(height<400,1,0)) '<400', sum(if(height>=400 and height<600,1,0)) '400-600'...

g

于 2012-04-15T13:26:38.840 に答える