【原创】实现日、周、月排行统计
2009-04-23 15:21
190 查看
在如今很多系统中,都需要进行日、周、月排行统计,但是在网上寻找了一番,发现很多都是相对的周、月排行,即周排行则用当前时间减去7天。这样我个人认为并不恰当。如月排行中,假设今天是4月22日,则从3月22日至4月22日之间都可以算成月排行内,这样的话与我们的月排行不尽相同,我认为月排行应该指当月的排行。
概括一下,即两种情况:当前日期往前推一周或者一个月(暂且描述为“相对排行”),当前日期所在周或者所在月(暂且描述为“绝对排行”)。
为了好描述和分析,举例说明。示例数据库如下:
说明:[/b]
表名:T_Visit
当前日期:2009-4-22
表中数据:如下
当前日期为星期几(@day):3[/b]
相对排行实现办法:[/b]
日排行:
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
绝对排行实现办法:[/b]
[/b]日排行:
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环境中测试)
概括一下,即两种情况:当前日期往前推一周或者一个月(暂且描述为“相对排行”),当前日期所在周或者所在月(暂且描述为“绝对排行”)。
为了好描述和分析,举例说明。示例数据库如下:
说明:[/b]
表名:T_Visit
当前日期:2009-4-22
表中数据:如下
当前日期为星期几(@day):3[/b]
相对排行实现办法:[/b]
日排行:
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
绝对排行实现办法:[/b]
[/b]日排行:
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环境中测试)
相关文章推荐
- CI(CodeIgniter)简单统计访问人数实现方法 原创
- CI(CodeIgniter)简单统计访问人数实现方法[原创]_php实例_脚本之家
- 实现日、周、月排行统计
- 实现日、周、月排行统计
- 实现日、周、月排行统计
- 一行代码实现各产品访问统计???[原创]
- 实现日、周、月排行统计 sql
- 实现日、周、月排行统计 sql
- [原创]oracle中decode()实现分组统计
- Python实现统计文本文件字数的方法
- 如何通过动态生成Html灵活实现DataGrid分类统计的界面显示功能
- 网站信息统计的简单实现过程
- JAVA重写equals和hashCode方法实现不定项分类统计
- 使用泛型实现单例提供者(原创翻译)
- 几个常用的Swift Extension:防止按钮重复点击、增加友盟页面统计、Dispatch_once Swift实现
- [原创]java WEB学习笔记23:MVC案例完整实践(part 4)---模糊查询的设计与实现
- Spark-Streaming与Spark-Sql整合实现实时股票排行---通过kafka列队数据
- .通过编程实现,统计1~n有多少个9 (n通过参数传入)
- ps教程-简单几部实现ps原创磨皮去黑痣-适合新手
- 汇编语言:在以GRADE为首地址的数组中存放着某班某门课30个学生的成绩。试编写一完整汇编语言程序实现:统计小于60分,60~89分和大于等于90分的学生人数,统计结果分别存放在LOWNUM、MIDD