實現日、周、月排行統計

 

在現在不少系統中,都須要進行日、周、月排行統計,可是在網上尋找了一番,發現不少都是相對的周、月排行,即周排行則用當前時間減去 7天。這樣我我的認爲並不恰當。如月排行中,假設今天是 422,則從 322日至 422日之間均可以算成月排行內,這樣的話與咱們的月排行不盡相同,我認爲月排行應該指當月的排行。
         歸納一下,即兩種狀況:當前日期往前推一週或者一個月(暫且描述爲「相對排行」),當前日期所在周或者所在月 (暫且描述爲「絕對排行」 )
         爲了好描述和分析,舉例說明。示例數據庫以下:
         說明:
表名: T_Visit
         當前日期: 2009-4-22
         表中數據:以下
         當前日期爲星期幾 (@day)3

相對排行實現辦法:數據庫

 

         日排行:
         select  top 20 ID, userIp, Date from T_Visit where (dbo.T_Visit.Date >= CONVERT(nvarchar(10), getdate(), 21)) AND (dbo.T_Visit.Date <= CONVERT(nvarchar(10), dateadd(day,1,getdate()), 21))
    周排行:
    select  top 20 ID, userIp, Date from T_Visit where  dbo.T_Visit.Date > getdate()-7
    月排行:
    select  top 20 ID, userIp, Date from T_Visit where  dbo.T_Visit.Date > getdate()-30
    絕對排行實現辦法:
         日排行:
         select  top 20 ID, userIp, Date from T_Visit where (dbo.T_Visit.Date >= CONVERT(nvarchar(10), getdate(), 21)) AND (dbo.T_Visit.Date <= CONVERT(nvarchar(10), dateadd(day,1,getdate()), 21))
    結果以下圖:

 

周排行:
    declare @day int
set @day =3
select  top 20 ID, userIp, Date from T_Visit where (dbo.T_Visit.Date >= CONVERT(nvarchar(10),dateadd(day,-@day,getdate()),21)) AND (dbo.T_Visit.Date<=CONVERT(nvarchar(10),dateadd(day,(7-@day),getdate()), 21))
結果以下圖:

  

月排行
Select top 20 ID, userIp, Date from T_Visit where year(Date)=year(getdate()) and month(date)=month(getdate())
結果以下圖:

相關文章
相關標籤/搜索