sql server 以10分钟分组 统计人数
请问针对时间段从每天早上7点开始统计每十分钟人
解决思路:
我以前做过一个关于月份的,是说每3个月以分组,其实是一样的。不过可能啊,整体数据量大会有问题。如果你只是求一天的,那绝对没问题。
【1】如果只是当天,那么你以当天七点为准,算当天所有时间与它的分钟差,然后group by 分钟差/10 即可
【2】如果是全部数据的话,那么你在where里把时间段条件加上,然后找个最早的时间点为准 group by 当前时间与最早时间点的分钟差/10
这位朋友这样是死写,本文以当天为例啊

【1】构建个表测试一下

【2】利用分钟差/10分组

【3】显示不直观,转换成时间显示

SELECT DATEDIFF( Minute, '2017-01-01 07:00:00', '2017-01-01 7:18:20') create table test104(
id int identity(1,1),
[time] datetime
)
insert into test104 values('20180301 07:05:05')
insert into test104 values('20180301 07:06:05')
insert into test104 values('20180301 07:15:05')
insert into test104 values('20180301 07:16:05')
insert into test104 values('20180301 07:25:05')
insert into test104 values('20180301 07:26:05')
insert into test104 values('20180301 07:35:05')
insert into test104 values('20180301 07:36:05')
insert into test104 values('20180301 07:45:05')
insert into test104 values('20180301 07:46:05')
insert into test104 values('20180301 07:55:05')
insert into test104 values('20180301 07:56:05') select dateadd(minute,DATEDIFF( Minute, '20180301 07:00:00', time)/10*10,'20180301 07:00:00' ),count(1) from test104
group by DATEDIFF( Minute, '20180301 07:00:00', time)/10
方法2:利用分钟构造出想要的分钟列。
比如 2018-03-01 07:56:05 ,构造出 2018-03-01 07:50:00
核心思想
(1)分钟数56拿出来,然后让其变成50
(2)怎么变成50?--》56-56%10 = 50
(3)怎么去掉后面的秒呢?用convert解决
select dateadd(minute,datepart(minute,time)%10*(-1),time ) as example_col
, convert(char(16), dateadd(minute,datepart(minute,time)%10*(-1),time) ,120)+':00' as [group_time]
,* from test104

后面的分组就不用多说了,直接分就OK
select
group_time,
count(1) as [时间段内记录数],
max(time) as [时间段内最大时间],
min(time) as [时间段内最小时间]
from
(
select dateadd(minute,datepart(minute,time)%10*(-1),time ) as example_col
, convert(char(16), dateadd(minute,datepart(minute,time)%10*(-1),time) ,120)+':00' as [group_time]
,* from test104
) t
group by group_time

上述2种办法适合于任意维度的时间操作
关于本文更好的办法,直接 --但仅限于这种10分钟的
sql server 以10分钟分组 统计人数的更多相关文章
- sql server编写通用脚本自动统计各表数据量心得
工作过程中,如果一个数据库的表比较多,手工编写统计脚本就会比较繁琐,于是摸索出自动生成各表统计数据量脚本的通用方法,直接上代码: /* 脚本来源:https://www.cnblogs.com/zha ...
- sql根据时间戳按年月日分组统计
sql根据时间戳按年月日分组统计,用于按日期分类: create_time为时间格式(字段名create_time 根据自己表字段修改,数据库中存为201610071202) SELECT DATE_ ...
- SQL Server代理(10/12):使用代理账号运行作业
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这一系列的上一篇,你查看了msdb库下用 ...
- sql server 索引阐述系列八 统计信息
一.概述 sql server在快速查询值时只有索引还不够,还需要知道操作要处理的数据量有多少,从而估算出复杂度,选择一个代价小的执行计划,这样sql server就知道了数据的分布情况.索引的统计值 ...
- SQL Server: Top 10 Secrets of a SQL Server Expert
转载自:http://technet.microsoft.com/en-us/magazine/gg299551.aspx Many companies have downsized their IT ...
- SQL 计算两个时间之差 分类: SQL Server 2014-07-04 10:57 119人阅读 评论(0) 收藏
SQL语句: A,B为两个字段,A为开始时间,B为结束时间,ss为秒. SELECT datediff(ss,A,B) FROM Table 详细:http://www.w3school.com.c ...
- sql server varchar(10)和 nvarchar(10)存储数据长度
) 存储10个字母,英文标点符号等,5个汉字以及中文标点等. )存储10汉字.字母等,不区分中英文.
- sql server top 10 IO性能查询
use master go ), ((case qs.statement_end_offset then datalength(qt.text) else qs.statement_end_offse ...
- sql server 按外键分组查询
SELECT ROW_NUMBER() over(partition by a.yngrbsh order by a.SFRQ desc ) RN, c.' and a.LSH not in(sele ...
随机推荐
- Flask-Script应用实例
#coding=utf-8 #Flask-Script是一个可以在flask应用外部编写脚本的扩展 #常用功能: #运行一个开发的服务器 #python shell中操作数据库看 #命令行任务 #fr ...
- 使用composer进行依赖管理:以guzzle为例
今天突然发现一个不错的php http客户端库guzzle,欣喜不已,跃跃欲试.打开guzzle文档,发现需要composer做依赖管理.之前没有接触过composer,正好以此学习下,也蛮好! 本文 ...
- ajax和promise的结合使用
在需要依赖完成的ajax请求可使用promise保证执行顺序 在第一个请求正确返回后再发送第二个请求 /* 定义一个使用promise的ajax请求,这里依赖jquery 参数中请求url为必填参数 ...
- 开机出现checking file system on C怎么办
开机出现checking file system on C怎么办 | 浏览:16126 | 更新:2018-02-04 13:51 | 标签:开机 百度经验:jingyan.baidu.com 开机出 ...
- 用图形数据库Neo4j 设计权限模块
已经 SpringSecurity 在几个项目中 实现权限模块,对于数据库,也是思考了不少,从Mysql 到 mongodb 都不是特别满意, 在Mysql中,如果权限相对简单,那么还能接受,如果稍微 ...
- 【css系列】创建网页加载进度条
一.最简单或者明显的方式是使用定时器 1.在网页中加入布局覆盖真实网页内容 2.使用定时器确定加载所用时间的长短,其实并不是真正的加载进度实现 <!DOCTYPE html> <ht ...
- C++ #include—尖括号和双引号的区别
如果你还看一些别的C++教程,那么你可能很早就发现了,有些书上的#include命令写作#include <文件名>,但有时候又会出现#include "文件名".你会 ...
- 正则表达式取querystring
var s = decodeURIComponent((new RegExp('[?|&]userid=([^&;]+?)(&|#|;|$)').exec(location.h ...
- how-to-build-c-static-libraries-boost
http://tungchingkai.blogspot.jp/2016/11/how-to-build-c-static-libraries-boost.html How to build C++ ...
- 第二步 (仅供参考) sencha touch 使用cmd打包apk
最新版本的cmd可以直接将sencha touch项目打包成本地应用,不过还有很多不足,本文仅供参考 通过sencha app build native命令可以直接将项目打包成本地应用,不过在命令运行 ...