请教一个SQL语句

lsgt 2008-10-11 08:57:18
我表里面有一个字段A的取值范围为1到100,我想查询出以下结果:

A为1~1.5时,字段B的平均值;
A为1.5~2时,字段B的平均值;
A为2~2.5时,字段B的平均值;
以此类推,直到
A为99.5~100时,字段B的平均值;

请问这个SQL该怎么写?
...全文
82 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsgt 2008-10-13
  • 打赏
  • 举报
回复
直接除以0.5好像也可以,刚才想叉了。谢谢。揭帖先。
wwwwb 2008-10-13
  • 打赏
  • 举报
回复
直接除以0.5应该还是可以吧?结贴吧,呵呵
lsgt 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wwwwb 的回复:]
select floor((a*100-50)/50),avg(b) from tt group by floor((a*100-50)/50)
[/Quote]

这个是正解,刚好也试出来了。非常感谢!
wwwwb 2008-10-13
  • 打赏
  • 举报
回复
select floor((a*100-50)/50),avg(b) from tt group by floor((a*100-50)/50)
wwwwb 2008-10-13
  • 打赏
  • 举报
回复
直接:
select floor(a/0.5),avg(b) from tt group by floor(a/0.5)
也可以
wwwwb 2008-10-13
  • 打赏
  • 举报
回复
因为不是>=与<=的关系,用上述方法应该可以
wwwwb 2008-10-13
  • 打赏
  • 举报
回复
换个思路,用这个试试
select floor((351-50)/50)
将351改为你的字段名,按这个分组试试
select floor((a-50)/50),avg(b) from tt group by floor((a-50)/50)
wwwwb 2008-10-13
  • 打赏
  • 举报
回复
呵呵,是这个意思,MYSQL没有类似VBA的PARTITION函数,这个函数可以自动设置
起、始、加(减)的常量,用这个函数直接分组就OK了,MYSQL不行。
lsgt 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wwwwb 的回复:]
将你的分隔数据1-1.5、1.5-2存入表中,再连接求平均值
[/Quote]

你的意思是不是要统计的时候,先建一临时表:
id tmin tmax
1 1 1.5
2 1.5 2
....
n 99.5 100



然后这样:
select avg(t1.B),t2.id from histry as t1,test as t2
where t1.A>=t2.tmin and t1.A<t2.tmax
group by t2.id

试了一下,这样是可以的。谢谢先。
不知道有没有办法可以不用建临时表?
wwwwb 2008-10-13
  • 打赏
  • 举报
回复
将你的分隔数据1-1.5、1.5-2存入表中,再连接求平均值
ccbukun 2008-10-11
  • 打赏
  • 举报
回复
应该要用到过程话的sql语句去
xqh2168 2008-10-11
  • 打赏
  • 举报
回复
顶个。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧