文档章节

有意思的关于sqlserver时间的取值和计算问题

 大云彩
发布于 2017/08/21 11:51
字数 298
阅读 4
收藏 0

有一批数据要处理(见图片),量比较大,时间跨度有五年,而且每一个地点会重复出现,我需要查出每一个地点的起始时间(最小值)和结束时间(最大值)以及停留的时间(最大值-最小值),停留时间不足一天的按一天处理,请问使用sqlserver如何实现? 

 

代码:

WITH
/* 测试数据
table1(dt,city) AS (
    SELECT '2017-01-01','BJ' UNION ALL
    SELECT '2017-01-02','BJ' UNION ALL
    SELECT '2017-01-03','BJ' UNION ALL
    SELECT '2017-01-04','BJ' UNION ALL
    SELECT '2017-01-05','BJ' UNION ALL
    SELECT '2017-01-06','BJ' UNION ALL
    SELECT '2017-01-07','HZ' UNION ALL
    SELECT '2017-01-08','HZ' UNION ALL
    SELECT '2017-01-09','HZ' UNION ALL
    SELECT '2017-01-10','HZ' UNION ALL
    SELECT '2017-01-11','HZ' UNION ALL
    SELECT '2017-01-12','HZ' UNION ALL
    SELECT '2017-02-01','BJ' UNION ALL
    SELECT '2017-02-02','BJ' UNION ALL
    SELECT '2017-02-03','BJ' UNION ALL
    SELECT '2017-02-04','BJ'
),
*/
a AS (
    SELECT dt,
           city,
           ROW_NUMBER() OVER(ORDER BY dt) rn1,
           ROW_NUMBER() OVER(ORDER BY city,dt) rn2
      FROM table1
),
b AS (
    SELECT rn1-rn2 seg,
           city,
           MIN(rn1) rn1,
           MIN(dt) dt_1,
           MAX(dt) dt_2
      FROM a
  GROUP BY rn1-rn2, city
)
    SELECT city,
           dt_1,
           dt_2,
           DATEDIFF(day,dt_1,dt_2)+1 days
      FROM b
  ORDER BY rn1

 

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 87
码字总数 14895
作品 0
丰台
程序员
大家期待已久的iMatrix平台mysql版本发布了

iMatrix平台有三个版本:oracle、sqlserver、mysql。 继iMatrix-oracle-6.0.0.RC1版本和iMatrix-sqlserver-6.0.0.RC1版本之后, 随后iMatrix-mysql-6.0.0.RC1版本相继发布了。关于版本的详细...

iMatrix
2014/07/15
0
0
sql server 性能调优 资源等待之网络I/O

一.概述   与网络I/O相关的等待的主要是ASYNCNETWORKIO,是指当sql server返回数据结果集给客户端的时候,会先将结果集填充到输出缓存里(ouput cache),同时网络层会开始将输出缓存里的数据...

花阴偷移
08/11
0
0
FreeBSD下执行SQL Server2005存储过程解决方案

FreeBSD下执行SQL Server2005存储过程解决方案(Warning: mssql_execute(): ...) FreeBSD下使用SQL Server2005(2008)需要使用FreeTDS。 安装FreeTSD后,使用PHP语言进行测试。在使用mssql_e...

雷xiao雨
2014/03/01
0
0
SQLServer 开启远程访问,也可逆向思维进行关闭

为了可以通过TCP/IP协议远程访问SQLServer数据库,需要做以下几点: 在SQLServer所运行的服务器上,我们必须找到SQLServer所侦听的端口然后添加到WIndows防火墙的【允许入站】中。 一:需要添...

easonjim
2015/08/25
0
0
Sql server 2000 连接测试

Sql server 2000 数据库本身规定了其数据库连接URL 的一般格式,如下: jdbc:sqlserver://[serverName[instanceName][:portNumber]][;property=value[;property=value]] 之间无空格,其中: ...

finereport
2011/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周日乱弹 —— 种族不同,禁止交往

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《苏菲小姐》- 鱼果 《苏菲小姐》- 鱼果 手机党少年们想听歌,请使劲儿戳(这里) @貓夏:下大雨 正是睡觉的好时候 临睡前...

小小编辑
今天
183
6
Python 搭建简单服务器

Python动态服务器网页(需要使用WSGI接口),基本实现步骤如下: 1.等待客户端的链接,服务器会收到一个http协议的请求数据报 2.利用正则表达式对这个请求数据报进行解析(请求方式、提取出文...

代码打碟手
今天
1
0
Confluence 6 删除垃圾内容

属性(profile)垃圾 属性垃圾的定义为,一个垃圾用户在 Confluence 创建了用户,但是这个用户在自己的属性页面中添加了垃圾 URL。 如果你有很多垃圾用户在你的系统中创建了属性,你可以使用...

honeymose
今天
0
0
qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部