日期:2014-05-17  浏览次数:20839 次

请教sql语句,将数值分为几个区间,统计每个区间的记录数,一条sql可以实现吗?
表中月100万记录,要求按列fh的值分区间统计记录数
fh 最大值 68566 最小值 234
等分成10个区间(不定,有可能是100个),按差值的10递减
1 68566 61732.8
2 61732.8 54899.6
3 54899.6 48066.4
4 48066.4 41233.2
5 41233.2 34400
6 34400 27566.8
7 27566.8 20733.6
8 20733.6 13900.4
9 13900.4 7067.2
10 7067.2 234
要求统计出每个区间的记录数,一条sql可以实现吗?


------解决方案--------------------
SELECT FLOOR((x-234) / 6833.2), COUNT(1) FROM t GROUP BY FLOOR((x-234) / 6833.2);

------解决方案--------------------
楼上方法高明,我是写的用伪表关联
select level,68566-((level-1)*((68566-234)/10)) c1,68566-level*((68566-234)/10) c2 from dual connect by level <=10