我有这样的表
price
id | prices
1 | 3910
2 | 4125
3 | 3740
4 | 2700
5 | 1600
6 | 2150
7 | 2430
我希望的输出就像那样
1500-1999 | 2000-2499 | 2500-2999 | 3000-3499 | 3500-3999 | 4000-4499 | allvalues
--------------------------------------------------------------------------------------
1 | 2 | 1 | 0 | 2 | 1 | 7
expli:
1500-1999 - >意味着我想要数字在1500到1999之间 等等,和其他人在一起。
所有值都是计算所有值。
*如果有人需要在那里进行测试,这里是sql fiddle。
希望一切都清楚,谢谢你的帮助。
答案 0 :(得分:5)
这是一种使用范围的枢轴。使用SUM(CASE...)
SELECT
SUM(CASE WHEN prices BETWEEN 1500 AND 1999 THEN 1 ELSE 0 END) AS `1500-1999`,
SUM(CASE WHEN prices BETWEEN 2000 AND 2499 THEN 1 ELSE 0 END) AS `2000-2499`,
SUM(CASE WHEN prices BETWEEN 2500 AND 2999 THEN 1 ELSE 0 END) AS `2500-2999`,
SUM(CASE WHEN prices BETWEEN 3000 AND 3499 THEN 1 ELSE 0 END) AS `3000-3499`,
SUM(CASE WHEN prices BETWEEN 3500 AND 3999 THEN 1 ELSE 0 END) AS `3500-3999`,
...
COUNT(*) AS `All Values`
FROM
prices
替换其余范围... CASE
如果条件匹配则生成0或1,并且由汇总SUM()
累加。