SQL技巧:创建用来按小时报告的查询

2016-01-29 16:20 5 1 收藏

SQL技巧:创建用来按小时报告的查询,SQL技巧:创建用来按小时报告的查询

【 tulaoshi.com - SQLServer 】

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

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 
 

来源:https://www.tulaoshi.com/n/20160129/1498307.html

延伸阅读
标签: MySQL mysql数据库
2006-10-8 表数据:tab1 id    name  num A     a         9 A     b       11 B     f         7 B     g  ...
一般模糊查询语句如下: 代码如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,“张猫三”、...
具体操作: 根据master.dbo.sysprocesses中的spid和blocked查找当前阻塞语句的主人,然后使用DBCC INPUTBUFFER ()查看阻塞语句。 例子: 打开三个查询分析器 A、B、C 创建一个测试用的表 testDia Create Table testDia(ID int); 在A执行以下语句: Begin tran Insert Into testDia Values(1); 在B执行以下语句: Select * from t...
Oracle 9i提供了很多函数可以用来辅助数据查询。接下来我们介绍常用的函数功能及使用方法。 4.5.1 函数 在输入select mgr, mgr/100,ceil(mgr/100) from scott.emp;,然后单击按钮,出现如图4.29所示的结果。 :\第4章\4.5\451.sql。 函数用法:ceil(n),取大于等于数值n的最小整数。 4.5.2 函数 在输入s...
Oracle 10g新增了阶层查询操作符PRIOR,CONNECT_BY_ROOT ■PRIOR 阶层查询的CONNECY BY condition的条件式需要用到PRIOR来指定父节点, 作为运算符,PRIOR和加(+)减(-)运算的优先级相同。 ■阶层查询 语法:START WITH condition CONNECT BY NOCYCLE condition START WITH 指定阶层的根 CONNECT BY 指定阶层的父/子关系 NOCYCLE...

经验教程

769

收藏

9
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部