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 ...
随机推荐
- springboot 集成elasticsearch5.4.3
官网上对elasticsearch 的集成用的是spring-data,而且,暂时不支持5.x的版本, 要是想集成5.x的版本,我们只能在pom.xml文件中进行修改,如图: <project ...
- 升级nodejs至最新
网上找出了很多升级nodejs版本的方法,都不太好用,直至发现这个: 在命令行窗口中执行:where node: 然后在nodejs官网中下载最新版本,将刚才目录下node.exe替换掉: 最后执行: ...
- 关于VC中的附加进程调试
今天领导要求在服务端添加一个获取会议参数的功能接口,接口写好后要自己测试,但是没有客户端的源码,只有客户端安装程序和客户端与服务端发送信令的底层库KSYSClient.dll,而我修改了客户端需要底层 ...
- C/C++获取文件后缀名并且比较
以下这段是VC中过去文件后缀名的方法 1.CString GetSuffix(CString strFileName) { return strFileName.Right(strFi ...
- 【LeetCode OJ】Longest Substring Without Repeating Characters
题目链接:https://leetcode.com/problems/longest-substring-without-repeating-characters/ 题目:Given a string ...
- 关于丢失或者损坏/etc/fstab文件后的一些探讨
1.模仿,假设不小心删除了/etc/fstab文件:大家都知道,Linux系统启动的时候会读取该文件来挂载分区,如果缺失该文件,系统一般不能正常启动. 2.采用reboot命令或者alt+ctrl+d ...
- thinkphp5.0 获取请求信息
如果要获取当前的请求信息,可以使用\think\Request类,除了下文中的 $request = Request::instance(); 也可以使用助手函数 $request = request ...
- 删除sql注入
), );--过滤字符串 字符串及之后的数据将被替换为空 set @FilterStr='</title><style>.alx2{'; set @curTable='user ...
- jenkins不安装任何插件时,是什么样的
因为jenkins中插件众多,很多时候大家默认安装的话,会默认安装一堆插件.而很多插件会给jenkins的各个方面去增强它, 一致于不清楚哪些功能是插件提供的,还是jenkins自带的. 所以下面将没 ...
- time_t到.NET DateTime的转换
time函数返回的time_t是一个utc时间且相对于1970年1月1日的total seconds,转换到DateTime只需以相同的方式转换回去即可. C/C++ auto t = time(); ...