MySQL SQL连续分组求分组范围?

网友解答: 这个可以用到case...when...,case...when...有点类似我们在其它编程语言中的if...else..功能。通过case...when...的逻辑判断,我

网友解答:

这个可以用到case...when...,case...when...有点类似我们在其它编程语言中的if...else..功能。通过case...when...的逻辑判断,我们可以做到分组统计。

case...when...数据的逻辑判断

语法上可以这么理解:

case 字段名 when 值 then 符合逻辑时指定的值 else 不符合逻辑指定的值 end

简单来说就是当字段名符合条件时,我们可以指定一个值,当不符合条件时我们可以指定另外一个值。

题主描述的问题就可以这样来解决:

case when (number<2 then '1-1' when (number between 3 and 6) then '3-6' .... else end)

这样就可以解决题主所提到的问题。

在这里我举一个例子,比如我们需要统计某个省份的用户交易金额区间分布,就可以结合group by进行相应的统计,达到目的。

分步的方法-逐个区间进行统计

我们也可以利用where条件进行统计,where条件的统计就需要我们利用union的方法将满足条件的各个查询结果合并在一起,得到最终的统计结果。比如

select count(number) number_count from numbers where number between 3 and 6

union

select count(number) number_count from numbers where number between 8 and 12

union

...

不过这样的话比较麻烦而且比较费时,因此不推荐这么去做,通过case...when....去处理分区间的统计是一个不错的选择。

网友解答:

可以 用case when 写sql的时候多拼一列 例如 case when number 100 and number <102 then 1 when ...... 然后 group by 它 就可以实现了

标签: