SQL回炉系列(二) 多表联合查询和视图
2015-11-23 10:31
459 查看
以下SQL脚本用于查询每个监测电表的即时功率和同时刻工作日的历史最大最小功率,涉及四张表:
即时数据表 cf_originaldata
电表信息表 StationInfo
历史记录表 HistoryMaxPower
日期信息表 WorkCalendar
即时数据表存放即时数据,每个电表每30秒采集一次数据存入;
电表信息表有表的ID,名字等信息;
历史记录表统计了每个电表一天中每个30秒单位的历史最大和最小功率,分工作日和非工作日,以isWorkDay字段区分;
日期信息表存放了日期信息,年月日星期几,是否是工作日等;
查询结果以显示为视图。
SQL语句如下:
SQL回炉系列(一) 序言
SQL回炉系列(二) 多表联合查询和排序
SQL回炉系列(三) 拆分原始数据到对应的月份表中
SQL回炉系列(四) 删除重复数据
SQL回炉系列(五) 为显示曲线图获取不同时间颗粒的数据
即时数据表 cf_originaldata
电表信息表 StationInfo
历史记录表 HistoryMaxPower
日期信息表 WorkCalendar
即时数据表存放即时数据,每个电表每30秒采集一次数据存入;
电表信息表有表的ID,名字等信息;
历史记录表统计了每个电表一天中每个30秒单位的历史最大和最小功率,分工作日和非工作日,以isWorkDay字段区分;
日期信息表存放了日期信息,年月日星期几,是否是工作日等;
查询结果以显示为视图。
SQL语句如下:
USE [ZSJ] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER VIEW [dbo].[RealPowerWithMaxMinView] AS SELECT ROW_NUMBER() over(order by c1.back) as rows, c2.StationID back, py, StationName, switchResult, max_py, min_py, count(distinct c2.StationID) notused from ( SELECT back, py FROM dbo.cf_originaldata WHERE getTime>DATEADD(SS, -20, GETDATE()) and gettime = (SELECT TOP 1 gettime FROM dbo.cf_originaldata ORDER BY AutoId DESC) ) c1 right join StationInfo c2 on c1.back=c2.StationID left join ( select max_py,min_py,StationID from dbo.HistoryMaxPower where time=(select top 1 time from HistoryMaxPower where time<convert(varchar(100),getdate(),8) order by time desc) and isWorkDay= (select isWorkDay from dbo.WorkCalendar where convert(varchar(10),the_date,120)=convert(varchar(10),GetDate(),120)) ) c3 on c2.StationID=c3.StationID group by c1.back,c2.StationID, py, StationName, switchResult,max_py, min_py GO
SQL回炉系列(一) 序言
SQL回炉系列(二) 多表联合查询和排序
SQL回炉系列(三) 拆分原始数据到对应的月份表中
SQL回炉系列(四) 删除重复数据
SQL回炉系列(五) 为显示曲线图获取不同时间颗粒的数据
相关文章推荐
- Memcached笔记——(一)安装&常规错误&监控
- WAMPP安装后mysql无法启动
- SQL语句
- MySQL数据库读写分离的简单方法
- Hive之insert into 和insert overwrite
- PL/SQL正确选择游标类型
- 简洁的MysqlHelper
- Mysql分库分表方案
- Oracle--用户管理与权限分配
- ORACLE用JDBC操作CLOB
- oracle分配权限 学习笔记--转载
- PL/SQL开发中动态SQL的使用方法
- 基于Oracle的高性能动态SQL程序开发
- SQL 回炉系列(一)
- 动态SQL和PL/SQL的EXECUTE选项分析
- spring + redis 实现数据的缓存
- Memcached在使用中常用到的方法
- 修改服务器数据库密码
- mysql 查询父级
- mysql 查询父级