文档章节

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

 大云彩
发布于 2017/08/21 11:51
字数 298
阅读 6
收藏 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
丰台
程序员
私信 提问
MySQL 8.0 中统计信息直方图的尝试

原文出处:MSSQL123 直方图是表上某个字段在按照一定百分比和规律采样后的数据分布的一种描述,最重要的作用之一就是根据查询条件,预估符合条件的数据量,为sql执行计划的生成提供重要的依据...

MSSQL123
09/15
0
0
英文Sqlserver java获取nvarchar 为空问题

今天遇到个很奇怪的问题 安装了一个英文版的sqlserver 2008 然后java项目取值时 发现只要是字段设置为nvarchar的中文取值都为NULL (实际是有值的),用sqlserver客户端程序查询都是 正常的 ...

活不明白·
2014/11/08
230
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
SQLSERVER性能监控级别步骤

原文:SQLSERVER性能监控级别步骤 SQLSERVER性能监控级别步骤 下面先用一幅图描述一下有哪些步骤和顺序 1、识别瓶颈 识别瓶颈的原因包括多个方面,例如,资源不足,需要添加或升级硬件; 工作...

杰克.陈
08/17
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

没有更多内容

加载失败,请刷新页面

加载更多

[LintCode] Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

描述 设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你...

honeymose
56分钟前
5
0
java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
23
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
18
0
my.ini

1

architect刘源源
今天
16
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部