给定一个包含数字字段(mynum)的表(mytable),如何编写一个SQL查询,根据该字段中的值范围而不是每个不同的值来汇总表的数据?
为了更具体的例子,让我们将它的间隔设为3,并用count(*)进行“汇总”,这样结果就会告诉mynum为0-2.99的行数,行数其中它是3-5.99,其中它是6-8.99等等。
答案 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