1条回答 默认 最新
关注 请说明一下使用的是什么数据库,以及数据库的版本,还有你最终想得到的数据是长什么样子,有哪些字段。
我,先假定你这个数据可以确保每个电表每分钟都一条记录,最后想要的数据是在这个数据的基础上加三列,
那么这个最简单的写法就是用开窗函数的lag将上n行的数值拉到本行,再相减。select a.*, (lag(数值)over(partition by 电表名称 order by 数据生成时间))-a.数值 一分钟用电量, (lag(数值,15)over(partition by 电表名称 order by 数据生成时间))-a.数值 十五分钟用电量, (lag(数值,60)over(partition by 电表名称 order by 数据生成时间))-a.数值 一小时用电量 from 表 a
但是有部分数据库是不支持开窗函数的。
假设数据是不完整的或者存在某分钟的数据重复了,上面这个方法就会有偏差,但同理,假设倒推60分钟后,刚好那分钟没有采集到数据,这个该怎么算,你也得给个规则另外,如果你是想聚合数据,按指定的时间点来进行分段统计,那么你需要说明一下每15分钟的第1分钟是从哪里开始
你这个格式的话,要说明一下每个字段打算怎么计算,明明输出的每个电表只有一行记录,哪里来的每小时?
如果是平均每小时的用电量,那只要算出平均每分钟直接乘60,
你用ivalue求和是不对的,因为这个值是抄表记录,不是表示1分钟用了这么多电,比如电表初始记录为1000,下1分钟电表为1020,那么这分钟就用了20度电,
因此你如果确定是计算平均用电的话,只需要- 拿每个电表的最后一个数值减去第一个数据,得到总用电量,
- 然后用最后一次时间减去第一次时间,得时长并转换为分钟,
- 最后用总用电量除以时长即可。
但这种平均用电量在实际使用中并没有什么意义,看不到任何数据走势,无法区分用电高峰期
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥170 如图所示配置eNSP
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效
- ¥15 悬赏!微信开发者工具报错,求帮改
- ¥20 wireshark抓不到vlan
- ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
- ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
- ¥15 stata安慰剂检验作图但是真实值不出现在图上