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分钟的
转载于:https://www.cnblogs.com/gered/p/8549241.html
sql server 以10分钟分组 统计人数相关推荐
- 【SQL Server】10分钟快速安装SQL Server
下载文件 https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 任意选择一个下载,大概6M左右 右键以管理员运行第一个SQl2 ...
- (SQL语句)按指定时间段分组统计
我现在有一张表: 列名1 时间 03174190188 2009-11-01 07:17:39.217 015224486575 2009-11-01 08:01:1 ...
- 【4 - 分组】Sql Server - 郝斌(分组group by、过滤having、聚合函数max() / count()、排序order by、select语句的执行顺序)
课程地址:数据库 SQLServer 视频教程全集(99P)| 22 小时从入门到精通_哔哩哔哩_bilibili 目录 group by(分组) group by a,b 的用法 having( ...
- 更新SQL Server实例所有数据库表统计信息
引出问题 自从上次菜鸟为老鸟解决了<RDS SQL SERVER 解决中文乱码问题>问题,老鸟意犹未尽,决定再想个招来刁难刁难菜鸟:"我最近做T-SQL性能调优的时候,经常发现执 ...
- SQL Server 2016:实时查询统计
一个数据库查询超时了,而你并不知道原因.估计查询计划可以揭示问题所在,因此,你彻底地消除了超时.但一个小时后,查询还在运行,而你无法获得真正的执行计划.要是有一种方法可以找出服务器内部实际正在发生的事 ...
- php按时间分组的sql语句,(SQL语句)按指定时间段分组统计
---------------------------------------Author : liangCK 梁爱兰--Comment: 小梁 爱 兰儿--Date : 2010-01-02 1 ...
- mysql group by 季度_sql server如何按季度分组统计所有的数据
展开全部 和按32313133353236313431303231363533e78988e69d8331333365663566月份组的原理是一样的吧! 按季度分组和按月分组的区别应该就是时间段的区 ...
- sql server 修改IDENTITY 字段 的统计当前值
一个表数据是从另一服务器同步过来的.现在数据已超过了 3514万条,但插入值时,提示不能插入重复键值 320. 查看表的统计时间,看到是N年前统计的. 手工更新表统计信息: UPDATE STATIS ...
- sql server模糊查询、分组
一.系统函数 1.convert(类型[length] ,表达式[,样式]) 2.isnull(表达式,默认值) 字符函数: len() 长度 ltrim()|rtrim()去除左右空格 ...
最新文章
- 《CSS揭秘》-背景与边框
- 连载:阿里巴巴大数据实践—数据建模综述
- 关于ASCII字符的那些事儿
- OpenShift 4 - Fedora CoreOS (3) - 定制 CoreOS ISO
- web 富文本编辑器总结
- CISA 已遭利用漏洞列表新增17项
- 用 tf.data 加载图片
- 网络安全学习笔记--《暗战强人:黑客攻防入门全程图解》
- 吐血推荐|2万字总结Mac所有应用程序、软件工具和相关资料
- U8来料报检保存出错
- vmware 14 pro许可证
- LATEX参考文献添加文章doi号并嵌入超链接+IEEE期刊缩写查询
- Graph Meta Network for Multi-Behavior Recommendation精读
- win10下pytorch 安装以及查看版本
- 顶级在线图片处理工具Photopea
- Java整合ORC识别验证码
- Java 开发规范文档
- 微信支付分(四)--取消支付分订单
- Machine Learning - A/B Test
- android 角标框架,Android 实现桌面未读角标