求平均值最大值解决办法

水蓝涩曦 2009-05-19 10:47:12
有表数据:

ID 时间点 值
1 20090519000000 12.3
2 20090519000500 10.2
3 20090519001000 0.3
4 20090519001500 12.4
5 20090519002000 34.0
.
.
.
.
.

以上时间戳时间间隔不固定,我想取20分钟或者30分钟一个点存到另一个表,需要求20分钟或者30分钟的平均值存到另张表,高手请指点!
...全文
131 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2009-05-19
  • 打赏
  • 举报
回复
写一个定时job,在job中取最大值和平均值,并保存到另外一张数据表中。
superhsj 2009-05-19
  • 打赏
  • 举报
回复
只是第一组不对还是所有的都不对?
水蓝涩曦 2009-05-19
  • 打赏
  • 举报
回复
哥们,求的平均值不对啊,我验证了一下,不是正确的结果
superhsj 2009-05-19
  • 打赏
  • 举报
回复
试试这个可以吗
20分钟的
select max(时间点),avg(值) from table group by ceil((时间点-'20090519000000')/2000);
30分钟的
select max(时间点),avg(值) from table group by ceil((时间点-'20090519000000')/3000);
superhsj 2009-05-19
  • 打赏
  • 举报
回复
lz能不能把我的sql的执行结果贴出来看看
水蓝涩曦 2009-05-19
  • 打赏
  • 举报
回复
需求是在oralce数据库中,另外表结构是别人设计的,时间点的类型是varchar的,以上sql我测试是错误的
superhsj 2009-05-19
  • 打赏
  • 举报
回复
20分钟的
select min(时间点)||'-'||max(时间点),avg(值)
from table group by ceil((decode(时间点,'20090519000000','20090519000001',时间点)-'20090519000000')/2000);
30分钟的
select min(时间点)||'-'||max(时间点),avg(值)
from table group by ceil((decode(时间点,'20090519000000','20090519000001',时间点)-'20090519000000')/3000);
浪尖赏花 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 superhsj 的回复:]
试试这个可以吗

SQL code20分钟的
select max(时间点),avg(值) from table group by ceil((时间点-'20090519000000')/2000);
30分钟的
select max(时间点),avg(值) from table group by ceil((时间点-'20090519000000')/3000);
[/Quote]
改ceil为floor试试

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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