首页 > 解决方案 > SQL - 如果按字段分组是数字,分组如何工作?

问题描述

给定以下表达式:

select cast(round((a) / 5) * 5 as integer) as val
       , count(case when b >= 0 then 1 
                    else null 
                end) as count_b
group by val

这如何使用“val”表达式对字段“b”进行分组?输出给出: output_data

这是根据它是> val,还是< val,还是在相邻的val之间进行分组?

标签: sql

解决方案


在支持别名的数据库中group by,它与重复表达式相同:

group by cast(round((a) / 5) * 5 as integer)

这基本上是将值四舍五入到最接近的 5 倍数。因此,5、5.1 和 6.2 等值都在“5”的组中。


推荐阅读