一个sql的查询 求教怎么做

ruirui09171208 2011-01-17 03:09:15
现有一个告警信息表,重要字段如下:

设备代码device_code(VARCHAR),楼宇代码build_code(VARCHAR),告警时间alarm_time(DATE)

还有其他乱七八糟的一些属性。

就是一个楼宇里 有N多设备,一个设备在任意时间里都可能有告警

所以一条记录就是一个设备在告警时间里告警记录

现在就是要查询

楼宇 在某个时间段内 告警的设备个数
...全文
83 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxyzxq2008 2011-01-17
  • 打赏
  • 举报
回复

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

gelyon 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ruirui09171208 的回复:]
引用 3 楼 gelyon 的回复:
SQL code

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


这样统计出来的是 总的次数,就是一个build_code下,所有天线总的次数……
[/Quote]
--哦 ,可能有重复的楼宇,需要distinct
SELECT build_code, Count( distinct device_code) 设备个数
FROM 告警信息表
WHERE alarm_time BETWEEN 起始时间 AND 结束时间
GROUP BY build_code
ruirui09171208 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhuomingwang 的回复:]
SQL code
select count(distinct device_code)
from tablename
where alarm_time between to_date('20110116','yyyymmdd')
and to_date('20110117','yyyymmdd')
[/Quote]

distinct 还能这样用啊,受教了
ruirui09171208 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gelyon 的回复:]
SQL code

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

这样统计出来的是 总的次数,就是一个build_code下,所有天线总的次数
gelyon 2011-01-17
  • 打赏
  • 举报
回复

--大概是这样
SELECT build_code, Count(device_code) 设备个数
FROM 告警信息表
WHERE alarm_time BETWEEN 起始时间 AND 结束时间
GROUP BY build_code
  • 打赏
  • 举报
回复
select count(distinct device_code)
from tablename
where alarm_time between to_date('20110116','yyyymmdd')
and to_date('20110117','yyyymmdd')
gelyon 2011-01-17
  • 打赏
  • 举报
回复

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

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧