zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    WordPress网站绑定多个域名的方法
    htpasswd 命令使用
    在Windows下用OpenSSL生成证书步骤
    WCF中关于List和数据的转换问题
    NET2.0的配置文件
    C# Attribute
    c#自定义属性
    VS2005中读写配置文件(方法二)
    c#的反射
    Asp.NET 操作配置文件 Steven Pei 博客园
  • 原文地址:https://www.cnblogs.com/zuochanzi/p/13371669.html
Copyright © 2011-2022 走看看