cs_BlogActivityNightlyJob//cs_BlogActivityReportAggregate_Get///cs_BlogActivityReportRecords_Get

本文介绍了一段SQL过程,用于生成博客活动报告,并通过聚合函数统计特定日期范围内的博客活动数据,包括浏览量、评论数等指标。
ContractedBlock.gifExpandedBlockStart.gif
None.gifALTER     PROCEDURE [dbo].cs_BlogActivityNightlyJob
None.gif
None.gif
AS
None.gif
SET Transaction Isolation Level Read UNCOMMITTED
None.gif
BEGIN
None.gif    
declare @RunDate datetime
None.gif    
declare @JobRunDate datetime
None.gif    
set @JobRunDate = getdate()
None.gif    
set @RunDate = dateadd(d, -1convert(datetime, (convert(varchar(10), @JobRunDate101))))
ExpandedBlockStart.gifContractedBlock.gif         
/**//*101---美国---输入输出(mm/dd/yyyy)*/
ExpandedBlockStart.gifContractedBlock.gif         
/**//*先转换成varchar(10),然后再转换成datetime,并在天数上递增-1*/
None.gif     
None.gif        
insert into [cs_BlogActivityReport] 
None.gif    
select t.SectionID, t.ThreadID, @RunDate as CoverageDate
None.gif     ,TotalViews  
= (select t1.TotalViews from dbo.cs_Threads t1 left outer join cs_BlogActivityReport yesterdays on t.ThreadID = yesterdays.ThreadID and yesterdays.CoverageDate = dateadd(d, -1@RunDatewhere t1.ThreadID = t.ThreadID and t1.SectionID = t.SectionID)
None.gif     ,DayViews 
= (select coalesce((t1.TotalViews - yesterdays.TotalViews), t1.TotalViews) from dbo.cs_Threads t1 left outer join cs_BlogActivityReport yesterdays on t.ThreadID = yesterdays.ThreadID and yesterdays.CoverageDate = dateadd(d, -1@RunDatewhere t1.ThreadID = t.ThreadID and t1.SectionID = t.SectionID)
None.gif     ,DayComments  
= (select count(*from dbo.cs_Posts p1 where p1.ThreadID = t.ThreadID and p1.PostID <> p1.ParentID and p1.ApplicationPostType = 4 and p1.PostDate between @RunDate and dateadd(d, 1@RunDate))
None.gif     ,DayTrackBacks 
= (select count(*from dbo.cs_Posts p1 where p1.ThreadID = t.ThreadID and p1.PostID <> p1.ParentID and p1.ApplicationPostType = 8 and p1.PostDate between @RunDate and dateadd(d, 1@RunDate))
None.gif         ,IsPost   
= (select case when p1.ApplicationPostType = 1 then 1 else 0 end from dbo.cs_Posts p1 where p1.ThreadID = t.ThreadID and p1.PostID = p1.ParentID)
None.gif     ,IsArticle  
= (select case when p1.ApplicationPostType = 2 then 1 else 0 end from dbo.cs_Posts p1 where p1.ThreadID = t.ThreadID and p1.PostID = p1.ParentID)
None.gif     ,JobExecutionTimeStamp 
= @JobRunDate
None.gif         ,DayPosts 
= (select count(*from dbo.cs_Posts p1 where p1.ApplicationPostType = 1 and p1.ThreadID = t.ThreadID and p1.PostID = p1.ParentID and p1.PostDate between @RunDate and dateadd(d, 1@RunDate))
None.gif     ,DayArticles 
= (select count(*from dbo.cs_Posts p1 where p1.ApplicationPostType = 2 and p1.ThreadID = t.ThreadID and p1.PostID = p1.ParentID and p1.PostDate between @RunDate and dateadd(d, 1@RunDate))
None.gif    
from dbo.cs_Threads t 
None.gif    
-- Some existing CS databases have orphaned thread records that should have been deleted, so check to make sure at least one top-level post exists for the thread
None.gif
    where exists(select PostID from dbo.cs_Posts p1 where p1.ThreadID = t.ThreadID and p1.PostID = p1.ParentID)
ExpandedBlockStart.gifContractedBlock.gif        
/**//*就是插入数据,博客这块放着以后再来.在主要的GROUP\SECTION\THREAD\POST表中同时保持博客,论坛,相册的数据.*/
None.gif
END
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
None.gif
GO

ContractedBlock.gifExpandedBlockStart.gifcs_BlogActivityReportAggregate_Get
None.gifALTER       PROCEDURE [dbo].cs_BlogActivityReportAggregate_Get
None.gif
----总计
None.gif
     @nRecordNumberStart INT
None.gif        ,
@nRecordNumberEnd INT
None.gif        ,
@BegReportDate DateTime
None.gif    ,
@EndReportDate DateTime
None.gif    ,
@Paged BIT
None.gif)
None.gif
None.gif
AS
None.gif
BEGIN
None.gif
None.gif
-- declare @Paged BIT
None.gif--
 set @Paged = 1
None.gif--
 declare @EndReportDate DateTime
None.gif--
 set @EndReportDate = '1/1/2008'
None.gif--
 declare @BegReportDate DateTime
None.gif--
 set @BegReportDate = '1/1/1900'
None.gif--
 declare @nRecordNumberStart INT
None.gif--
 set @nRecordNumberStart = 1
None.gif--
 declare @nRecordNumberEnd INT
None.gif--
 set @nRecordNumberEnd = 100
None.gif

None.gif
None.gif
IF @Paged = 1
None.gif    
BEGIN
None.gif        
DECLARE @totalRecords INT
None.gif        
--------------------------------------------------------------------
None.gif
        -- Define the table to do the filtering and paging(过滤和页面调度)
None.gif
        --------------------------------------------------------------------
None.gif
        DECLARE @tblTempData TABLE
None.gif        (
None.gif            nID 
INT IDENTITY
None.gif            ,DayViews 
INT
None.gif            ,DayComments 
INT
None.gif            ,DayTrackbacks 
INT
None.gif            ,DayPosts 
INT
None.gif            ,DayArticles 
INT
None.gif            ,ApplicationKey 
varchar(100)
None.gif        )
None.gif        
INSERT INTO @tblTempData
None.gif        (
None.gif            DayViews
None.gif            ,DayComments
None.gif            ,DayTrackbacks
None.gif            ,DayPosts
None.gif            ,DayArticles
None.gif            ,ApplicationKey
None.gif        )
ExpandedBlockStart.gifContractedBlock.gif               
/**//*创建临时表,插入数据*/
None.gif        
SELECT
None.gif            
SUM(DayViews) AS DayViews, SUM(DayComments) AS DayComments, SUM(DayTrackBacks) AS DayTrackBacks
None.gif            ,
SUM(DayPosts) AS DayPosts, SUM(DayArticles) AS DayArticles
None.gif            ,(
SELECT  ApplicationKey FROM cs_Sections AS s WHERE  (SectionID = bar.SectionID)) AS ApplicationKey
None.gif        
FROM
None.gif            cs_BlogActivityReport 
AS bar
None.gif            
INNER JOIN cs_Sections sec ON sec.SectionID = bar.SectionID
None.gif        
WHERE 
None.gif            ApplicationType 
= 1
None.gif                
AND bar.CoverageDate between @BegReportDate and @EndReportDate
None.gif            
AND DayViews > 0
None.gif        
GROUP BY
None.gif            bar.SectionID
None.gif        
ORDER BY
None.gif            DayViews 
DESC
ExpandedBlockStart.gifContractedBlock.gif                  
/**//*从cs_BlogActivityReport表中统计数据插入临时表中*/
None.gif        
SET @totalRecords = @@rowcount
None.gif        
-------------------------------------------------------------------------------------
None.gif
        
None.gif        
SELECT
None.gif            DayViews
None.gif            ,DayComments
None.gif            ,DayTrackbacks
None.gif            ,DayPosts
None.gif            ,DayArticles
None.gif            ,ApplicationKey
None.gif        
FROM
None.gif            
@tblTempData 
None.gif        
WHERE
None.gif            nID 
BETWEEN @nRecordNumberStart AND @nRecordNumberEnd
None.gif        
ORDER BY 
None.gif            nID 
ASC
ExpandedBlockStart.gifContractedBlock.gif        
/**//*从临时表查询数据*/
None.gif        
--Return Record Count
None.gif
                --返回总记录
None.gif
        SELECT @totalRecords
None.gif
None.gif        
--Return TotalBlogs
None.gif
                 --返回总博客
None.gif
        SELECT COUNT(SectionID)
None.gif        
FROM cs_Sections
None.gif        
WHERE ApplicationType = 1
None.gif
None.gif        
--Return TotalEnabledBlogs
None.gif
                --返回总可用博客
None.gif
        SELECT COUNT(SectionID)
None.gif        
FROM cs_Sections
None.gif        
WHERE ApplicationType = 1 AND IsActive = 1
None.gif
None.gif        
--Return TotalDisabledBlogs
None.gif
                --返回总不可用博客(不活动)
None.gif
        SELECT COUNT(SectionID)
None.gif        
FROM cs_Sections
None.gif        
WHERE ApplicationType = 1 AND IsActive = 0
None.gif    
END
None.gif
ELSE
None.gif    
BEGIN  --如果无页面控制
None.gif
        SELECT
None.gif            (
SELECT  ApplicationKey FROM cs_Sections AS s WHERE  (SectionID = bar.SectionID)) AS ApplicationKey
None.gif            ,
SUM(DayViews) As TotalViews
None.gif            ,
SUM(DayComments) As TotalComments
None.gif            ,
SUM(DayTrackBacks) As TotalTrackBacks
None.gif            ,
SUM(DayPosts) As TotalPosts
None.gif            ,
SUM(DayArticles) As TotalArticles
None.gif        
FROM
None.gif            cs_BlogActivityReport 
AS bar
None.gif            
INNER JOIN cs_Sections sec ON sec.SectionID = bar.SectionID
None.gif        
WHERE
None.gif            ApplicationType 
= 1
None.gif                
AND bar.CoverageDate between @BegReportDate and @EndReportDate
None.gif        
GROUP BY
None.gif            bar.SectionID
None.gif        
ORDER BY
None.gif            TotalViews 
DESC
None.gif    
END
None.gif
END                                                                                                                                                                                                                               
None.gif
None.gif
None.gif
None.gif
GO

ContractedBlock.gifExpandedBlockStart.gifcs_BlogActivityReportRecords_Get
None.gifALTER   PROCEDURE [dbo].cs_BlogActivityReportRecords_Get
None.gif(
None.gif     
@nRecordNumberStart INT
None.gif        ,
@nRecordNumberEnd INT
None.gif        ,
@BegReportDate DateTime
None.gif    ,
@EndReportDate DateTime
None.gif)
None.gif
None.gif
AS
None.gif
BEGIN
None.gif    
DECLARE @totalRecords INT
None.gif
None.gif    
--------------------------------------------------------------------
None.gif
        -- Define the table to do the filtering and paging
None.gif
        --------------------------------------------------------------------
ExpandedBlockStart.gifContractedBlock.gif
          /**//*创建临时表并添加数据*/
None.gif        
DECLARE @tblTempData TABLE
None.gif        (
None.gif            nID 
INT IDENTITY
None.gif            ,SectionID 
INT
None.gif            ,ThreadID 
INT
None.gif        ,CoverageDate 
DateTime
None.gif            ,TotalViews 
INT
None.gif        ,DayViews 
INT
None.gif        ,DayComments 
INT
None.gif        ,DayTrackbacks 
INT
None.gif        ,IsPost 
bit
None.gif        ,IsArticle 
bit
None.gif        ,JobExecutionTimeStamp 
DateTime
None.gif        ,PostID 
INT
None.gif        ,PostSubject 
varchar(256)
None.gif        ,ApplicationPostType 
INT
None.gif        ,ApplicationKey 
varchar(100)
None.gif        )
None.gif    
INSERT INTO @tblTempData
None.gif    (
None.gif            SectionID
None.gif            ,ThreadID
None.gif        ,CoverageDate
None.gif            ,TotalViews
None.gif        ,DayViews
None.gif        ,DayComments
None.gif        ,DayTrackbacks
None.gif        ,IsPost
None.gif        ,IsArticle
None.gif        ,JobExecutionTimeStamp
None.gif        ,PostID
None.gif        ,PostSubject
None.gif        ,ApplicationPostType
None.gif        ,ApplicationKey
None.gif        )
None.gif        
SELECT  SectionID, ThreadID, CoverageDate, TotalViews, DayViews, DayComments, DayTrackBacks, IsPost, IsArticle, JobExecutionTimeStamp,
None.gif            (
SELECT  PostID FROM     cs_Posts AS p WHERE  (PostLevel = 1AND (ThreadID = bar.ThreadID)) AS PostID,
None.gif        (
SELECT  Subject FROM     cs_Posts AS p WHERE  (PostLevel = 1AND (ThreadID = bar.ThreadID)) AS PostSubject,
None.gif            (
SELECT  ApplicationPostType FROM     cs_Posts AS p WHERE  (PostLevel = 1AND (ThreadID = bar.ThreadID)) AS ApplicationPostType,
None.gif            (
SELECT  ApplicationKey FROM     cs_Sections AS s WHERE  (SectionID = bar.SectionID)) AS ApplicationKey
None.gif    
FROM     cs_BlogActivityReport AS bar
None.gif    
WHERE 
None.gif        (((
SELECT  ApplicationPostType FROM     cs_Posts AS p WHERE  (PostLevel = 1AND (ThreadID = bar.ThreadID)) = 1)
None.gif                
OR ((SELECT  ApplicationPostType FROM     cs_Posts AS p WHERE  (PostLevel = 1AND (ThreadID = bar.ThreadID)) = 2))
None.gif                
AND bar.CoverageDate between @BegReportDate and @EndReportDate
None.gif    
ORDER BY
None.gif        bar.CoverageDate
None.gif    
SET @totalRecords = @@rowcount
None.gif        
---------------------------------------------------------------------------------------------------------------------------------------
ExpandedBlockStart.gifContractedBlock.gif
          /**//*查询数据*/
None.gif    
SELECT
None.gif            SectionID
None.gif            ,ThreadID
None.gif            ,TotalViews
None.gif        ,DayViews
None.gif        ,DayComments
None.gif        ,DayTrackbacks
None.gif        ,IsPost
None.gif        ,IsArticle
None.gif        ,JobExecutionTimeStamp
None.gif        ,PostID
None.gif        ,PostSubject
None.gif        ,ApplicationPostType
None.gif        ,ApplicationKey
None.gif        ,CoverageDate
None.gif        
FROM
None.gif        
@tblTempData 
None.gif        
WHERE
None.gif        nID 
BETWEEN @nRecordNumberStart AND @nRecordNumberEnd
None.gif        
ORDER BY 
None.gif            nID 
ASC
None.gif
None.gif
-- Return totalRecords
None.gif
SELECT @totalRecords
None.gif
None.gif
END
None.gif                                                                                                                                                                                                                                         
None.gif
None.gif
None.gif
None.gif
GO

转载于:https://www.cnblogs.com/ruanbl/archive/2006/09/04/494159.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值