zoukankan      html  css  js  c++  java
  • 实现日、周、月排行统计

    在如今很多系统中,都需要进行日、周、月排行统计,但是在网上寻找了一番,发现很多都是相对的周、月排行,即周排行则用当前时间减去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())

    结果如下图:

    (注:本示例在Sql Server 2005环境中测试)

  • 相关阅读:
    Linux系统挂载NTFS移动硬盘
    ActiveReport报表开发谈谈ActiveReport的中文化问题
    硬件接口开发之USB电话录音盒来电显示
    如何使用正则表达式进行QQ校友的数据采集
    硬件接口开发之Modem来电显示
    关于MSHTML控件使用的问题
    【转】ISession接口介绍
    发送带嵌入图片邮件之SMTP实现和ESMTP实现
    C#进行MapX二次开发之地图搜索
    Database2Sharp混淆处理之经验分享(国庆专辑,祝福我们的祖国)
  • 原文地址:https://www.cnblogs.com/top5/p/1904814.html
Copyright © 2011-2022 走看看