实现日、周、月排行统计 sql
在如今很多系统中,都需要进行日、周、月排行统计,但是在网上寻找 了一番,发现很多都是相对的周、月排行,即周排行则用当前时间减去7天。这样我个人认为并不恰当。如月排行中,假设今天是4月22日,则从3月22日至4月22日之间都可以算成月排行内,这样的话与我们的月排行不尽相同,我认为月排行应该指当月的排行。
概括一下,即两种情况:当前日期往前推一周或者一个月(暂且描述为“相对排行”),当前日期所在周或 者所在月(暂且描述为“绝对排行”)。
为了好描述和分析,举例说明。示例数据库如下:
说明:
表名: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()) andmonth(date)=month(getdate())
结果如下图:

(注:本示例在Sql Server 2005环境中测试)
实现日、周、月排行统计 sql的更多相关文章
- Flex自定义组件开发之日周月日期选择日历控件
原文:Flex自定义组件开发之日周月日期选择日历控件 使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的 ...
- pg按日,周,月进行数据统计
pg数据库按周,月统计数据 SELECT date_trunc('WEEK', insert_time) as insertDate, SUM(data_increment) as dataTotal ...
- mysql按日/周/月统计
一.mysql按日统计 ) count ' and start_time > '2017-06-28' group by days; 二.mysql按周统计 ) ' group by weeks ...
- MySql查询日周月
常用计算日期的函数 日 date(日期) = CURDATE() 自然周 YEARWEEK(date_format(日期,'%Y-%m-%d') , 1) = YEARWEEK(now() , 1) ...
- 4月1日->-4月15日 2周阶段性计划
4月1日->4月14日 ST表 树状数组 LCA 一周的时间,力求掌握这三个知识点并各刷五道题左右. 树状数组 ST表 LCA 然而:进展总比计划快(......什么鬼) 树状数组刷了5题,ST ...
- C# 根据天、周、月汇总统计生成统计报表
先看核心代码: public List<DataEntity> SearchShopSalesReport(DateTimeOffset? dateFrom, DateTimeOffset ...
- sql按月统计数量和按月累加统计数量
1.简单的,按月统计数量 SELECT CREATE_DATE, DATE_FORMAT(CREATE_DATE, '%Y-%m') AS month , COUNT(*) AS sum FROM p ...
- 西安Uber优步司机奖励政策(1月18日~1月24日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 西安Uber优步司机奖励政策(1月11日~1月17日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
随机推荐
- react router activeclassName 没有显示
import React, {Component} from 'react' import {NavLink, Switch, Route, Redirect} from 'react-router- ...
- C# 后台调用存储过程
例一丶返回集合 [WebMethod] public object RegisterMethod(string type, string username, string password, stri ...
- 新引入thinkphp报错“应用目录[./Application/]不可写,目录无法自动生成! 请手动生成项目目录~”
新引入thinkphp报错“应用目录[./Application/]不可写,目录无法自动生成! 请手动生成项目目录~”, 其主要原因是文件夹的权限问题,手动将项目文件夹权限更改为可读可写就OK,具体操 ...
- [Luogu] P1131 [ZJOI2007]时态同步
题目描述 题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3…进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何 ...
- 在springBoot的控制台打印sql语句
在springBoot+Mybatis日志显示SQL的执行情况的最简单方法就是在properties新增: properties形式 logging.level.com.eth.wallet.mapp ...
- Oracle 数据库实例启动关闭过程
Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载.Oracle数据启动的过程被划分为 几个不同的步骤,在不同的启动过程中,我们可以对其实现不同的操作,系统修复等 ...
- win10下硬盘安装CentOS7
安装环境: 1.系统:Windows 10 2.硬盘:SSD(已装好Win 10) + HHD(用来装CentOS 7) 准备工作: 1.DiskGenius(分区工具):用来给硬盘做分区: 2.系统 ...
- PHP:获取用户IP
文章来源:http://www.cnblogs.com/hello-tl/p/7685263.html //获取用户ip(外网ip 服务器上可以获取用户外网Ip 本机ip地址只能获取127.0.0.1 ...
- Spring Boot 2 (二):Spring Boot 2 尝鲜-动态 Banner
Spring Boot 2.0 提供了很多新特性,其中就有一个小彩蛋:动态 Banner,今天我们就先拿这个来尝尝鲜. 配置依赖 使用 Spring Boot 2.0 首先需要将项目依赖包替换为刚刚发 ...
- Shrio Demo
package com.atguigu.shiro.helloworld; import org.apache.shiro.SecurityUtils; import org.apache.shiro ...