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 ...
随机推荐
- Apache Kafka 0.11版本新功能简介
Apache Kafka近日推出0.11版本.这是一个里程碑式的大版本,特别是Kafka从这个版本开始支持“exactly-once”语义(下称EOS, exactly-once semantics) ...
- 【NET多线程】C#多线程异步请求多个url地址
异步测试代码 System.Diagnostics.Debug.Print("start"); new Thread(new ThreadStart(new Action(() = ...
- 使用 github Pages 服务建立个人独立博客全过程
你是否有这样子的需求,只是想简单的写写文章,记录下自己的学习心得.成长经历等,都是些文字内容,不需要配置使用数据库.不想购买服务器自己搭建站点,只是想安安静静的用比较舒服的方式来写篇文章. 静态博客就 ...
- Python Tkinter Text控件
原文地址: http://blog.csdn.net/bemorequiet/article/details/54743889 这篇博客主要是简单的说一下Tkinter中的Text控件的相关知识. T ...
- 网卡bonding模式 - bond0、1、4配置
网卡bonding模式 - bond0.1.4配置 网卡bonding简介 网卡绑定就是把多张物理网卡通过软件虚拟成一个虚拟的网卡,配置完毕后,所有的物理网卡的ip和mac将会变成相同的.多网卡同时工 ...
- oracle如何删除表空间
drop tablespace 表空间名 including contents and datafiles cascade constraint; ............. 以system用户登录, ...
- css的border的solid
http://www.w3school.com.cn/cssref/pr_border-style.asphttp://www.w3school.com.cn/tiy/t.asp?f=csse_bor ...
- dinner vs supper
用dinner还是supper? 据我唯一认识一个美国人……讲,至少在美国他们用dinner,supper也许在英国更常用些. 他在小时候都没听说过supper这个词…… 另外,have dinner ...
- thinkphp开启事物的简单方法
使用thinkphp开启事务,ThinkPHP 3.2.2实现事务操作的方法: 开启事务: $User->startTrans() 提交事务: $User->commit() 事务回滚: ...
- 原生JS实现ajax 发送post请求
1. [代码]原生JS实现ajax 发送post请求 <script> var oStr = ''; var postData = {}; var oAjax = null; //post ...