标题:SQL 异常数据处理
只看楼主
seven_smile
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-6-30
 问题点数:0 回复次数:8 
SQL 异常数据处理
数据库名称:SJK
表名称    TEXT            
时间              电表度数    水表度数 气流量计度数
2021/6/22 18:00        12    13           8
2021/6/22 19:00        30    50           20
2021/6/22 20:00        62    110           45
2021/6/22 21:00        70    122           52
2021/6/22 22:00        72    125           52
2021/6/22 23:00        74    127           60
2021/6/23 0:00        76    129           62
2021/6/23 1:00        72    133           64
2021/6/23 2:00        80    136           66
2021/6/23 3:00        82    536           68
2021/6/23 4:00        84    137           770

如上表所示:2021/6/23 1:00    178    133           64
            2021/6/23 3:00    82    536           68
            2021/6/23 4:00    84    137           770
三行数据178 536 770是存在问题的。判断方法:列的(当前数据-上一条数据)<200,且列的(当前数据-上一条数据)>0
则将上一条数据的值赋给该数据即:
            2021/6/23 1:00    76    133           64
            2021/6/23 3:00    82    136           68
            2021/6/23 4:00    84    137           68
则生产新表A如下:
时间              电表度数    水表度数 气流量计度数
2021/6/22 18:00        12    13           8
2021/6/22 19:00        30    50           20
2021/6/22 20:00        62    110           45
2021/6/22 21:00        70    122           52
2021/6/22 22:00        72    125           52
2021/6/22 23:00        74    127           60
2021/6/23 0:00        76    129           62
2021/6/23 1:00        76    133           64
2021/6/23 2:00        80    136           66
2021/6/23 3:00        82    136           68
2021/6/23 4:00        84    137           68


搜索更多相关主题的帖子: 流量 异常 数据 处理 SQL 
2021-06-30 17:40
seven_smile
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-6-30
得分:0 
如上表所示:2021/6/23 1:00    72    133           64
            2021/6/23 3:00    82    536           68
            2021/6/23 4:00    84    137           770
2021-06-30 17:43
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
数据库设计存在缺陷
时间,电表度数,水表度数,气流量计度数
改为
编号,日期,电表读数,水表读数,电表底数,水表底数,....
1.生成空表
读取上个月的读数,当作本月的底数,
2.抄表,
填写本月的读数,
2021-07-01 08:48
seven_smile
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-6-30
得分:0 
回复 2楼 seven_smile
你在说什么?
2021-07-01 12:26
seven_smile
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-6-30
得分:0 
回复 3楼 mywisdom88
我说的是异常数据处理方法,不是我表的问题!!!!
2021-07-01 12:27
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
就是表设计有问题,才导致数据异常
2021-07-02 12:33
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
新抄表时,先统一生成1个,本月底数的新数据,然后,抄表录入对应的表号的读数
为了避免本月有的编号为抄表,可以把 本月读数=上月读数,本月底数=上月读数,为条件,生成本月读数表,
假设,本月某个表号,没有录入新读数,本月用量就是0了,这样,就算下个月再抄表,也不影响到总的用量,
从而,避免很多不必要的数据异常问题。
2021-07-02 12:42
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
生成新抄表数据,如
编号,日期,电表读数,水表读数,电表底数,水表底数.....电表用量,水表用量
B1001,20210701,100,100,100,100,0,0
B1002,20210701,110,110,110,110,0,0

录入数据,更新读数(电表读数,水表读数),用量计算出来
B1001,20210701,120,110,100,100,20,10   
B1002,20210701,130,125,110,110,20,15

下次,生成新抄表的数据
B1001,20210801,120,110,120,110,0,0   
B1002,20210801,130,125,130,125,0,0
下次录入相间
B1001,20210801,150,140,120,110,30,20   
B1002,20210801,150,140,130,125,20,15
不断循环



[此贴子已经被作者于2021-7-2 12:51编辑过]

2021-07-02 12:50
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
查询某个编号的抄表数据,就得出
select 编号,日期,电表读数,水表读数,电表底数,水表底数,电表用量,水表用量 from 抄表数据 order by 日期


编号,  日期,  电表读数, 水表读数, 电表底数, 水表底数, 电表用量, 水表用量
B1001, 20210701, 120,   110,    100,   100,   20,    10   
B1002, 20210701, 130,   125,    110,   110,   20,    15
B1001, 20210801, 150,   140,    120,   110,   30,    20   
B1002, 20210801, 150,   140,    130,   125,   20,    15


[此贴子已经被作者于2021-7-2 13:01编辑过]

2021-07-02 12:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-506137-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.060567 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved