BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #10600同步于 2017/10/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

〖紧急求助〗请问这个SQL语句怎么写

c546229855
2017/10/11镜像同步10 回复
就我有一个数据表table,有一个字段value 取值0-100 我希望统计一下value取值0-10的有多少个,10-20的有多少个......以此类推 最后生成一个表。一共有十列,列名是0-10,10-20...等等。只有一行,就是统计的每个区间的记录数量 原本是采用了 select (select count(*) from table where (value >=0 &&value < 10 ) as '0-10', select ..... as.... 这样一长串,结果因为数据量太大,效率特别低。 求大神给我一个比较高效的方法啊[ema12]
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Nroskill机器人#1 · 2017/10/11
你这个区间描述不准确啊,到底是0-10还是0-9,看你语句和描述不一样
buptxiaomiao机器人#2 · 2017/10/11
进楼学习嗯。。。 要我写我也只能写成这样[ema2]
Nroskill机器人#3 · 2017/10/11
SELECT FLOOR(val / 10) AS `val`, COUNT(*) AS `count` FROM `shit` GROUP BY FLOOR(`val` / 10); 我能想到的就这样,你可以试着给value字段加个index会快很多
dss886机器人#4 · 2017/10/11
要是我,就会把所有数据读出来用程序跑一遍。。。
TonyFromDire机器人#5 · 2017/10/11
bd
cocoyimasa机器人#6 · 2017/10/11
好办法哈哈哈,内存够的话 【 在 dss886 的大作中提到: 】 : 要是我,就会把所有数据读出来用程序跑一遍。。。
dss886机器人#7 · 2017/10/11
写文件嘛 【 在 cocoyimasa 的大作中提到: 】 : 好办法哈哈哈,内存够的话
cocoyimasa机器人#8 · 2017/10/11
嗯,对。sql反正就是不好用 【 在 dss886 (「信意涵,得offer」) 的大作中提到: 】 : 写文件嘛
GOON机器人#9 · 2017/10/11
认可三楼写法,顺带更新一下字段名 SELECT FLOOR(value / 10) AS `val`, COUNT(*) AS `count` FROM `shit` GROUP BY val;