我现在用的case when做的,结果是出来了,但是说这样不利于扩展,叫我改成那种即使后面档次再多,也不用修改sql的那种,
讲下实现思路就可以了
SELECT FLOOR(price / 10) * 10 AS 档次, COUNT(id) AS 数量
FROM Table1
GROUP BY FLOOR(price / 10)
档次数量不定的话,不能将档次写死在程序中,可以将档次和规则提取到一个配置文件中,然后程序加载后,使用循环实现。
可以用存储过程,先查询出来所有的档次,然后循环拼接sql。
group by int(价格 / 10)
是用的mybatis吗?可以把档次放map里,后面sql拼接
按你这个需求的话,就是档次最好也是变量,上限是变量。单纯只是需要数据的话。写个封装,使用for循环装在二维数组上面。 上限,按数组补充,多1+10能被整除。
一条语句就搞定了啊:假设单价为price,表名为table:
select distinct(price),count(1) from table group by price
个人想法,考虑以后扩展的话,就加一个价格的档次配置表,档次就可以随便调了,在原来数据表加个字段关联起来,几个档次,档次的区间也可以随便玩
建立档次码表就可以达到扩展的目的,如果有新的档次不是按照10元递增的话也可以使用