6

以下の例のように、mySql にテーブル t_points があります。

Name          Surname          Point
Joe           Arnold           120
Michale       Black            250
Masha         Petrova          300
Natalie       Jackson          120
John          Turo             200
Bona          Meseda           250
Zeyda         Nura             150
Zanura        Bohara           60
Shaheen       Boz              360
Abbas         Murat            160
Keira         Black            230
Tom           Robinson         480
Fred          Balka            490
Semia         Hudovi           90
Sona          Bahari           60

ポイント範囲の数を表示するクエリを書きたいと思います。ポイント範囲は次のようになります: 0 ~ 100、101 ~ 200、201 ~ 300、301 ~ 400 の間のポイント。結果は次のようになります。

0_100           101_200          201_300            301_400
3               5                4                  3

私が言いたいことを理解していると思います。では、この結果にはどのクエリを使用する必要がありますか?
ありがとう。

4

5 に答える 5

12
select
     count(CASE WHEN point BETWEEN 0 AND 100 THEN 1 END) as count0_100,
     count(CASE WHEN point BETWEEN 101 AND 200 THEN 1 END) as count101_200,
     count(CASE WHEN point BETWEEN 201 AND 300 THEN 1 END) as count201_300,
     ...
from
    t_poits
于 2012-04-05T12:27:37.567 に答える
2

@範囲を設定 = 500;

select floor(field1/@range)*@range as `from`,(ceil(field1/@range)+if(mod(field1,@range)=0,1,0))*@range as `to`, count(field1)
from table1
group by 1,2
order by 1,2;
于 2016-06-16T10:13:38.183 に答える
2

そんな感じ:

select count(*) as count, abs(point/100) as range 
from t_poits
group by abs(point/100)
于 2012-04-05T12:21:12.030 に答える
1

ポイント列をグループ化し、数学演算を実行して範囲を指定できます。これに基づいて、レコードの数を数えることができます。

好き..

SELECT concat( 101 * round( Point /101 ) , '-', 101 * round( Point /101 ) +100 ) AS `range` , count( * ) AS `result`
FROM t_points
GROUP BY 1
ORDER BY Point

それがあなたのために働くことを願っています。

于 2012-04-05T12:27:55.507 に答える
0
select
    concat(floor(Point/100),'01_',ceil(Point/100),'00') as ind,
    count(*) as cnt
  from t group by ind order by ind asc;
于 2012-04-05T12:26:25.410 に答える