SELECT convert(varchar(10),convert(int,Score))+"~"+convert(varchar(10),convert(int, CASE WHEN Score=ceiling(Score) THEN Score+1 ELSE ceiling(Score) END)), count() from TTT
GROUP BY convert(varchar(10),convert(int,Score))+"~"+convert(varchar(10),convert(int, CASE WHEN Score=ceiling(Score) THEN Score+1 ELSE ceiling(Score) END))
ORDER BY 1
注意:0~1返回0次的结果出不来。
如一定要求0~1的也出结果,你还得把需求说得更清楚一下。比如说将上述ID为3的数据改为32,那么4~5的也将为0而查不到,还要显示4~5为0吗?5~6、6~7呢?简而言之,要求高的话,需要说明Score的最小值和最大值。
SELECT BSTART_PRICE||'元到'||BEND_PRICE||'元',
SUM(CASE WHEN APRICE >BSTART_PRICE AND APRICE <=BEND_PRICE THEN 1 ELSE 0 END)
FROM 产品价格表 A,价格区间表 B WHERE APRICE >BSTART_PRICE AND APRICE<=BEND_PRICE
GROUP BY BSTART_PRICE||'元到'||BEND_PRICE||'元'
只能这样了,象你结果表里最左边那么显示实在太难,只能一个个的去定义呀
-----补充----
好像也行,排序有点费劲
SELECT CASE
WHEN bstart_price || '元到' || bend_price || '元' LIKE '0%'
THEN '10元以下'
WHEN bstart_price || '元到' || bend_price || '元' LIKE '4%'
THEN '40元以上'
ELSE bstart_price || '元到' || bend_price || '元'
END,
SUM (CASE
WHEN aprice >= bstart_price AND aprice <= bend_price
THEN 1
ELSE 0
END
)
FROM 产品价格表 a, 价格区间表 b
WHERE aprice >= bstart_price AND aprice <= bend_price
GROUP BY CASE
WHEN bstart_price || '元到' || bend_price || '元' LIKE '0%'
THEN '10元以下'
WHEN bstart_price || '元到' || bend_price || '元' LIKE '4%'
THEN '40元以上'
ELSE bstart_price || '元到' || bend_price || '元'
END
以上就是关于SQL 查询单列不同区间值全部的内容,包括:SQL 查询单列不同区间值、oracle 一条sql查询出价格在各个区间的统计、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)