按间隔分组

时间:2008-10-13 11:28:06

标签: sql mysql

给定一个包含数字字段(mynum)的表(mytable),如何编写一个SQL查询,根据该字段中的值范围而不是每个不同的值来汇总表的数据?

为了更具体的例子,让我们将它的间隔设为3,并用count(*)进行“汇总”,这样结果就会告诉mynum为0-2.99的行数,行数其中它是3-5.99,其中它是6-8.99等等。

2 个答案:

答案 0 :(得分:15)

这个想法是计算在你想要的每个组中具有恒定值的字段的某些功能:

select count(*), round(mynum/3.0) foo from mytable group by foo;

答案 1 :(得分:3)

我不知道这是否适用于mySql,无论如何在SQL Server中我认为你可以“简单地”在选择列表和分组列表中使用group by。

类似的东西:

select 
    CASE 
        WHEN id <= 20 THEN 'lessthan20' 
        WHEN id >  20 and id <= 30 THEN '20and30' ELSE 'morethan30' END,
    count(*) 
from Profiles 
where 1=1 
group by 
    CASE 
        WHEN id <= 20 THEN 'lessthan20' 
        WHEN id >  20 and id <= 30 THEN '20and30' ELSE 'morethan30' END

返回类似

的内容
 column1     column2    
 ----------  ---------- 
 20and30     3          
 lessthan20  3          
 morethan30  13