分别按照 日期:时: 天:月:年进行统计信息

简介: CREATE  PROC [dbo].tongjixinxi   @KeywordId int,   @Type int=0 --0:日-4,8,12,16,20,24    --1:周-1,2,3,4,5,6,7    --2:月-5,10,15,20,25,di    --3:年-3,,6,9,...

CREATE  PROC [dbo].tongjixinxi
   @KeywordId int,
   @Type int=0 --0:日-4,8,12,16,20,24
    --1:周-1,2,3,4,5,6,7
    --2:月-5,10,15,20,25,di
    --3:年-3,,6,9,12

   --@TotalInfo int output
AS
BEGIN
 DECLARE @PageTemp1 table
    (
        Pid Int,
        KeywordId INT,
     Title varchar(255),
  Brief varchar(255),
  Link varchar(255),
  CreatedDate datetime,
  LastUpdatedDate datetime 
    )
    DECLARE @PageTemp2 table
    (
        Pid Int,
        KeywordId INT,
     Title varchar(255),
  Brief varchar(255),
  Link varchar(255),
  CreatedDate datetime,
  LastUpdatedDate datetime 
    )
    INSERT INTO @PageTemp1  SELECT P.Id,T.KeywordId,T.Title,P.Brief,P.Link,P.CreatedDate,P.LastUpdatedDate FROM PageSnapTitles T inner JOIN PageSnaps P  ON T.Id=P.TitleId where T.KeywordId=@KeywordId
  IF(@Type=0) --0:日-4,8,12,16,20,24----NOTE:此处为测试使用;等项目完成;正式使用该存储过程可删去;
  BEGIN
   DECLARE @num INT
   SELECT  @num=COUNT(*) FROM PageSnaps WHERE DAY(LastUpdatedDate) =DAY(GETDATE())-1
     IF(@num>3)
     BEGIN
      SELECT DATEPART(HOUR,T.LastUpdatedDate) AS 'Date',COUNT(T.Pid) AS PsCount FROM
      (SELECT * FROM @PageTemp1 WHERE DATEPART(HOUR,LastUpdatedDate)
      BETWEEN DATEPART(HOUR,GETDATE()) AND DATEPART(HOUR,GETDATE())-24) AS T
      GROUP BY DATEPART(HOUR,LastUpdatedDate)
      ORDER BY DATEPART(HOUR,LastUpdatedDate) asc
     END
     ELSE
     BEGIN
        SELECT DATEPART(HOUR,LastUpdatedDate) AS 'Date',COUNT(*) AS PsCount FROM @PageTemp1 GROUP BY DATEPART(HOUR,LastUpdatedDate) ORDER BY DATEPART(HOUR,LastUpdatedDate) asc
     END
  END
  ELSE IF(@Type=1)-----1:周-1,2,3,4,5,6,7
  BEGIN
  select datename(weekday,T.LastUpdatedDate)AS 'Date',COUNT(T.Pid) AS PsCount
   from (SELECT * FROM @PageTemp1 WHERE  DATEPART(WEEK,LastUpdatedDate)
   BETWEEN DATEPART(WEEK,GETDATE()) AND DATEPART(WEEK,GETDATE())+1) AS T ----为了验证数据有待修改
   GROUP BY DATENAME(weekday,T.LastUpdatedDate) ORDER BY datename(weekday,T.LastUpdatedDate)
   ASC
  END
     ELSE IF(@Type=2)--2:月-5,10,15,20,25,di
  BEGIN
   SELECT convert(varchar(10),LastUpdatedDate,120) as 'Date', count(Pid) as PsCount from @PageTemp1
   group by convert(varchar(10),LastUpdatedDate,120)
   order By convert(varchar(10),LastUpdatedDate,120) ASC
  END
  ELSE IF(@Type=3)--3:年-3,,6,9,12
  BEGIN
    SELECT DATENAME(YEAR,T.LastUpdatedDate) AS 'Date',COUNT(T.Pid) AS PsCount FROM
    (SELECT *FROM @PageTemp1 WHERE YEAR(LastUpdatedDate)
    BETWEEN YEAR(DATEADD(YEAR,-10,getdate())) AND YEAR(getdate()))AS T GROUP BY 
    DATENAME(YEAR,T.LastUpdatedDate) ORDER BY  DATENAME(YEAR,T.LastUpdatedDate) ASC   
  END
 END

目录
相关文章
|
C语言 C++
C++ 如果设置日期 & 时间基础篇
C++ 如果设置日期 & 时间基础篇
|
分布式计算 Java 大数据
MapReduce基础编程之按日期统计及按日期排序(下)
MapReduce基础编程之按日期统计及按日期排序(下)
338 0
MapReduce基础编程之按日期统计及按日期排序(下)
|
测试技术
统计天数
统计天数
|
C语言 C++
C++ 如果设置日期 & 时间基础篇
C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件。
7-19 树种统计 (10 分)
7-19 树种统计 (10 分)
109 0
|
分布式计算 Java Hadoop
MapReduce基础编程之按日期统计及按日期排序(上)
MapReduce基础编程之按日期统计及按日期排序(上)
262 0
MapReduce基础编程之按日期统计及按日期排序(上)
|
存储 Unix 关系型数据库
关于日期及时间字段的查询
在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询。关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法。
292 0
关于日期及时间字段的查询
|
机器学习/深度学习
|
关系型数据库 Oracle
获取两个日期之间日期列表
企鹅交流群 127591054 ORACLE select date '2017-11-11' + level - 1 ddate, level from dual connect by ...
1217 0