sqlserver 按日统计采集数据数量,并根据上下限值统计越界数量

数据库表如上

想把每日统计用chart展现出来,按日统计采集数据数量,并根据上下限值统计越界数量 ,一个时间柱 日期  两个y 值 总数和 报警数

总数查出来很简单

SELECT CONVERT(varchar(100), t.DataCreateOn, 111) as day, count(*) as count from AutoNetwork_TargetData t GROUP BY CONVERT(varchar(100), t.DataCreateOn, 111)

 然后如何把报警数也添加进去呢, 是不是另起一个命令查出来合并呢

SELECT CONVERT(varchar(100), DataCreateOn, 111) as day, count(*) as count 
from AutoNetwork_TargetData where DataValue >60 or DataValue<-15 GROUP BY CONVERT(varchar(100), DataCreateOn, 111)

 上边查出来报警值 where 先过滤过滤掉了不符合条件的后进行 count

把where去掉 加having

SELECT CONVERT(varchar(100), DataCreateOn, 111) as day, count(*) as count 
from AutoNetwork_TargetData GROUP BY CONVERT(varchar(100), DataCreateOn, 111),DataValue
Having DataValue >60 or DataValue<-15

 后边这个因为group by  后边 合并考虑两个字段,于是 day 出现了重复, 还是不能满足要求

其实这里如果能巧用sum 两个值都能得到,在select 后边的结果里边进行筛选,而不是在 where 或者having 后边 进行过滤

SELECT CONVERT(varchar(100), DataCreateOn, 111) as day, count(*) as count ,sum(case when DataValue >60 or DataValue<-15 then 1 else 0 end)as alarmcount
from AutoNetwork_TargetData  GROUP BY CONVERT(varchar(100), DataCreateOn, 111)

原文地址:https://www.cnblogs.com/zuochanzi/p/13371669.html