现有一个告警信息表,重要字段如下:设备代码device_code(VARCHAR),楼宇代码build_code(VARCHAR),告警时间alarm_time(DATE)还有其他乱七八糟的一些属性。就是一个楼宇里 有N多设备,一个设备在任意时间里都可能有告警所以一条记录就是一个设备在告警时间里告警记录现在就是要查询楼宇 在某个时间段内 告警的设备个数

解决方案 »

  1.   


    SELECT build_code, Count(device_code) 设备个数
    FROM 告警信息表
    WHERE alarm_time BETWEEN 起始时间 AND 结束时间
    GROUP BY build_code
      

  2.   

    select count(distinct device_code)
    from tablename
    where alarm_time between to_date('20110116','yyyymmdd')
          and to_date('20110117','yyyymmdd')
      

  3.   


    --大概是这样
    SELECT build_code, Count(device_code) 设备个数
    FROM 告警信息表
    WHERE alarm_time BETWEEN 起始时间 AND 结束时间
    GROUP BY build_code
      

  4.   


    这样统计出来的是 总的次数,就是一个build_code下,所有天线总的次数
      

  5.   


    distinct 还能这样用啊,受教了
      

  6.   

    --哦 ,可能有重复的楼宇,需要distinct
    SELECT build_code, Count( distinct device_code) 设备个数
    FROM 告警信息表
    WHERE alarm_time BETWEEN 起始时间 AND 结束时间
    GROUP BY build_code
      

  7.   


    with tab as
    (
    select 'A' louyu, 'a' shebei, '20110117' gaojing from dual
    union all
    select 'A', 'a', '20110118' from dual
    union all
    select 'A', 'a', '20110119' from dual
    union all
    select 'A', 'b', '20110117' from dual
    union all
    select 'A', 'b', '20110118' from dual
    union all
    select 'B', 'a', '20110117' from dual
    union all
    select 'B', 'b', '20110117' from dual
    )
    select count(shebei) from tab where to_date(gaojing,'yyyymmdd') between to_date('20110101','yyyymmdd') and to_date('20110119','yyyymmdd') group by louyu 
    ------------------------------------
    5
    2