新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > 数据库综合 > 正文:细化解析:实例创建按小时来报告的查询

细化解析:实例创建按小时来报告的查询

新客网 XKER.COM 2007-08-15 来源: limeinan 收藏本文

要创建一个可以每个小时报告之查询,首先要创建一个表格。该表格一列记录日期,而没有时间信息;另一列记录钟点。下面之表格有一列记录了不同之处理类型。

例如,我们可以按小时找出处理类型之总数。

 

CREATE TABLE test
(StartTime DATETIME NOT NULL
DEFAULT CURRENT_TIMESTAMP,
StartDate DATETIME NOT NULL
DEFAULT CONVERT(DATETIME, CONVERT(CHAR(10),
CURRENT_TIMESTAMP, 110)),
StartHour INT NOT NULL
DEFAULT DATEPART(hh,CURRENT_TIMESTAMP),
TranType INT NOT NULL
CONSTRAINT ck_TranType CHECK ( TranType IN
( 
1, -- insert
2, -- update
3, -- delete
)
DEFAULT 1
)
GO

 

 

接下来,插入test之数据来模拟一个可能之样本。

 

INSERT test (StartTime, TranType) 
VALUES (CURRENT_TIMESTAMP, 3)
INSERT test (StartTime, TranType) 
VALUES (CURRENT_TIMESTAMP, 2) 

INSERT test (StartTime, TranType) 
VALUES (CURRENT_TIMESTAMP, 3)
GO

DECLARE @hr int
SET @hr = DATEPART(hh, 
DATEADD(hh,-1,CURRENT_TIMESTAMP) )

INSERT test 
(StartTime, TranType, StartHour) _
VALUES (DATEADD(hh,-1,CURRENT_TIMESTAMP), 3, @hr)
INSERT test (StartTime, TranType, StartHour) _
  VALUES (DATEADD(hh,-1,CURRENT_TIMESTAMP), 1, @hr)
INSERT test (StartTime, TranType, StartHour) _
  VALUES (DATEADD(hh,-1,CURRENT_TIMESTAMP), 2, @hr)
GO

然后用一个查询来找出按日和小时之处理总数。

 

SELECT StartDate tran_day,
StartHour tran_hour
, CASE trantype WHEN 1 THEN 'insert'
WHEN 2 THEN 'update'
WHEN 3 THEN 'delete'
ELSE 'unknown'
END trantype,
COUNT(*) tran_total 
FROM
Test
GROUP BY
StartDate,
StartHour
,trantype
ORDER BY StartDate, StartHour
COMPUTE SUM(COUNT(*)) BY StartDate, StartHour
GO

去掉test可以清空test表格。

 

DROP TABLE test
GO
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐