按10元为一个档次,查询单价各档次的数量

我现在用的case when做的,结果是出来了,但是说这样不利于扩展,叫我改成那种即使后面档次再多,也不用修改sql的那种,
讲下实现思路就可以了

9个回答

 SELECT        FLOOR(price / 10) * 10 AS 档次, COUNT(id) AS 数量
FROM            Table1
GROUP BY FLOOR(price / 10)

图片说明

my_name_nb
my_name_nb 牛逼 可以了 谢谢
一年多之前 回复

group by int(价格 / 10)

档次数量不定的话,不能将档次写死在程序中,可以将档次和规则提取到一个配置文件中,然后程序加载后,使用循环实现。

可以用存储过程,先查询出来所有的档次,然后循环拼接sql。

按你这个需求的话,就是档次最好也是变量,上限是变量。单纯只是需要数据的话。写个封装,使用for循环装在二维数组上面。 上限,按数组补充,多1+10能被整除。

一条语句就搞定了啊:假设单价为price,表名为table:
select distinct(price),count(1) from table group by price

个人想法,考虑以后扩展的话,就加一个价格的档次配置表,档次就可以随便调了,在原来数据表加个字段关联起来,几个档次,档次的区间也可以随便玩

建立档次码表就可以达到扩展的目的,如果有新的档次不是按照10元递增的话也可以使用

是用的mybatis吗?可以把档次放map里,后面sql拼接

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!