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

像这样的东西:

select count(*) as count, abs(point/100) as range 
from t_poits
group by abs(point/100)
于 2012-04-05T12:21:12.030 回答
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 回答
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 回答