SqlServer根据时段统计数据
create table ST_PPTN_R_Real
(
TID int primary key identity(1,1),
STCD varchar(100) not null,
TM datetime not null,
DRP decimal(8,2)
)
go
insert into ST_PPTN_R_Real values('龙谷站点','2013-05-01 00:00:00.000','52.3')
insert into ST_PPTN_R_Real values('龙谷站点','2013-05-01 00:35:00.000','77.3')
insert into ST_PPTN_R_Real values('龙谷站点','2013-05-01 00:44:00.000','46.4')
insert into ST_PPTN_R_Real values('龙谷站点','2013-05-02 15:21:00.000','85.5')
insert into ST_PPTN_R_Real values('龙谷站点','2013-05-03 05:16:00.000','42.3')
insert into ST_PPTN_R_Real values('龙谷站点','2013-05-03 22:31:55.000','160.77')
insert into ST_PPTN_R_Real values('奇峰峰巅','2013-05-01 02:41:00.000','23.3')
insert into ST_PPTN_R_Real values('奇峰峰巅','2013-05-03 14:50:00.000','564.3')
insert into ST_PPTN_R_Real values('奇峰峰巅','2013-05-05 22:33:00.000','77.5')
insert into ST_PPTN_R_Real values('枉顾站地','2013-05-03 02:01:00.000','43.3')
insert into ST_PPTN_R_Real values('枉顾站地','2013-05-03 05:21:00.000','67.3')
insert into ST_PPTN_R_Real values('枉顾站地','2013-05-06 14:42:00.000','56.4')
insert into ST_PPTN_R_Real values('枉顾站地','2013-05-06 15:21:00.000','83.5')
insert into ST_PPTN_R_Real values('柳体站点','2013-05-14 07:00:00.000','34.3')
insert into ST_PPTN_R_Real values('柳体站点','2013-05-15 09:35:00.000','23.3')
insert into ST_PPTN_R_Real values('柳体站点','2013-05-16 11:44:00.000','62.4')
insert into ST_PPTN_R_Real values('柳体站点','2013-05-16 18:44:00.000','73.4')
insert into ST_PPTN_R_Real values('柳体站点','2013-05-17 09:44:00.000','66.4')
go
select * from ST_PPTN_R_Real
go
(一)首先,把条件表准备好:
1.按照每时统计(其中master..spt_values等于master.dbo.spt_values为系统表,number为其中的子段,其实还有更方便的小时统计分组,但这里都套用了一个思路,就直接写下来了)
select CONVERT(varchar(20),dateadd(hour,number,cast('2013-04-01 00:00:00' as datetime)),120) rq,
cast(convert(varchar,dateadd(hour,number,cast('2013-04-01 00:00:00' as datetime)),120) as datetime) begin_time,
cast(convert(varchar,dateadd(hour,number+1,cast('2013-04-01 00:00:00' as datetime)),120) as datetime) end_time
from master..spt_values where type='P'
------这里才是真正的重点:
2.按照每天统计(这里的天与所理解的天不太一样,是根据时段设定的天,例如这里从本日的8点开始到次日的8点结束为一天)
select convert(varchar(10),cast('2013-04-01 00:00:00' as datetime)+number,120) rq,
cast(replace(convert(varchar,dateadd(d,0,cast('2013-04-01 00:00:00' as datetime)+number),120),'00:00:00','08:00:00') as datetime) begin_time,
cast(replace(convert(varchar,dateadd(d,1,cast('2013-04-01 00:00:00' as datetime)+number),120),'00:00:00','08:00:00') as datetime) end_time
from master..spt_values where type='P'
3.按照每月统计(其实还有更方便的月统计分组,但这里都套用了一个思路,就直接写下来了)
select CONVERT(varchar(7),dateadd(MONTH,number,cast('2013-04-01 00:00:00' as datetime)),120) rq,
cast(convert(varchar,dateadd(MONTH,number,cast('2013-04-01 00:00:00' as datetime)),120) as datetime) begin_time,
cast(convert(varchar,dateadd(MONTH,number+1,cast('2013-04-01 00:00:00' as datetime)),120) as datetime) end_time
from master..spt_values where type='P'
(二)开始分组统计
1.按照每时统计
select b.STCD,a.rq,sum(b.DRP) hj from
(
select CONVERT(varchar(20),dateadd(hour,number,cast('2013-04-01 00:00:00' as datetime)),120) rq,
cast(convert(varchar,dateadd(hour,number,cast('2013-04-01 00:00:00' as datetime)),120) as datetime) begin_time,
cast(convert(varchar,dateadd(hour,number+1,cast('2013-04-01 00:00:00' as datetime)),120) as datetime) end_time
from master..spt_values where type='P'
) a
inner join
ST_PPTN_R_Real b
on
b.TM>=a.begin_time and b.TMgroup by STCD,rq order by STCD,rq desc
2.按照每天统计
select STCD,a.rq,sum(b.DRP) hj from
(
select convert(varchar(10),cast('2013-04-01 00:00:00' as datetime)+number,120) rq,
cast(replace(convert(varchar,dateadd(d,0,cast('2013-04-01 00:00:00' as datetime)+number),120),'00:00:00','08:00:00') as datetime) begin_time,
cast(replace(convert(varchar,dateadd(d,1,cast('2013-04-01 00:00:00' as datetime)+number),120),'00:00:00','08:00:00') as datetime) end_time
from master..spt_values where type='P'
) a
inner join
ST_PPTN_R_Real b
on
b.TM>=a.begin_time and b.TMgroup by STCD,rq order by STCD,rq desc
3.按照每月统计
select b.STCD,a.rq,sum(b.DRP) hj from
(
select CONVERT(varchar(7),dateadd(MONTH,number,cast('2013-04-01 00:00:00' as datetime)),120) rq,
cast(convert(varchar,dateadd(MONTH,number,cast('2013-04-01 00:00:00' as datetime)),120) as datetime) begin_time,
cast(convert(varchar,dateadd(MONTH,number+1,cast('2013-04-01 00:00:00' as datetime)),120) as datetime) end_time
from master..spt_values where type='P'
) a
inner join
ST_PPTN_R_Real b
on
b.TM>=a.begin_time and b.TMgroup by STCD,rq order by STCD,rq desc
SqlServer根据时段统计数据的更多相关文章
- Sqlserver 按照时间段统计数据
WITH t1 ( [hour], title ) , ' 0:00:00--- 1:00:00' UNION ALL , ' 1:00:00--- 2:00:00' UNION ALL , ' 2: ...
- SQLServer恢复表级数据
最近几天,公司的技术维护人员频繁让我恢复数据库,因为他们总是少了where条件,导致update.delete出现了无法恢复的后果,加上那些库都是几十G.恢复起来少说也要十几分钟.为此,找了一些资料和 ...
- 转载:SQL按照日、周、月、年统计数据的方法
转载源:http://www.jb51.net/article/42613.htm SQL按照日.周.月.季度.年统计数据的方法 方式一: --按日 select sum(consume),day([ ...
- SQLServer比较两条数据是否相同
SQLServer比较两条数据是否相同 直接比较可能会一个一个字段的比较,也可以将多个字段拼成一个串然后比较,这里有个hash值比较的方法,很好用 用法 将需要的比较的column放进去,逗号隔开,只 ...
- 解剖SQLSERVER 第二篇 对数据页面头进行逆向(译)
解剖SQLSERVER 第二篇 对数据页面头进行逆向(译) http://improve.dk/reverse-engineering-sql-server-page-headers/ 在开发Orc ...
- 恢复SQLSERVER被误删除的数据(转——收藏)
恢复SQLSERVER被误删除的数据 摘自:http://www.cnblogs.com/lyhabc/p/3683147.html 曾经想实现Log Explorer for SQL Server的 ...
- sql不重复的查找统计数据(经典)
例表如下: 表名:MYTEST TID COL1 COL2 COL3 1 1 A A2 1 ...
- (转载)MySQL 统计数据行数 Select Count
(转载)http://www.5idev.com/p-php_mysql_select_count.shtml 统计数据行数 SELECT COUNT() FROM 语法用于从数据表中统计数据行数. ...
- mysql按月,按日分组统计数据
group by DATE_FORMAT(createtime,'%Y-%m');//按月统计数据 group by DATE_FORMAT(createtime,'%Y-%m-%d');//按天统计 ...
随机推荐
- java生成解析xml的另外两种方法Xstream
Xstream生成和解析xm和JAXB生成和解析xml的方法. 一,Xstream Xstream非jdk自带的,需要到入Xstream-1.4.3.jar和xpp3_min-1.1.4.jar 1. ...
- Java对象生命周期
[TOC] 1. 创建阶段(Created) 为对象分配存储空间 开始构造对象 从父类到子类对static成员进行初始化 父类成员变量按照顺序初始化,递归调用父类的构造方法 子类成员变量按照顺序初始化 ...
- [原]OpenGL基础教程(四)VBO+纹理绘制四边形
工程下载地址:http://pan.baidu.com/s/1ntr7NHv 提取码:yf1h 一.本文牵扯知识点梳理: (1)VBO (2)纹理 (3)libpng(加载png) (4)shader ...
- SASS用法指南-转
作者: 阮一峰 日期: 2012年6月19日 原文地址:http://www.ruanyifeng.com/blog/2012/06/sass.html 艹,没想到sass 2012年就有了.现在 ...
- RPM 包下载 GCC 4.8安装
http://ftp.scientificlinux.org/linux/scientific/ http://www.rpmfind.net/linux/rpm2html/search.php?qu ...
- unity3d 本地数据存储
using UnityEngine; using System.Collections; //路径工具类 public class PathKit { /** 后缀常量字符 */ public con ...
- Codeforces Round #237 (Div. 2) C. Restore Graph(水构造)
题目大意 一个含有 n 个顶点的无向图,顶点编号为 1~n.给出一个距离数组:d[i] 表示顶点 i 距离图中某个定点的最短距离.这个图有个限制:每个点的度不能超过 k 现在,请构造一个这样的无向图, ...
- jsp页面间传递参数 中文乱码问题(zz)
jsp页面间传递参数 中文乱码问题 1.传递参数 var url = "*****Test.jsp?param1="+encodeURI(encodeURI(str));//对 ...
- smartjs - DataManager API
dataServices 数据服务的管理器:首先看下具体的代码 //数据服务 dataServices = st.factory({ name: "dataServices", p ...
- 正确理解静态Static关键字
与其他语言不通,C#没有全局变量和全局函数的感念,C#的所有字段和方法都出现在一个类的上下文中,在C#中与全局字段或函数等价的就是静态字段或方法.“全局字段或方法”与“C#的静态字段或方法”没有功能上 ...