1. 题目一:
    create table etltable(
  2. name varchar(20) ,
  3. seq int,
  4. money int);
  5.  
  6. create table etltarget (
  7. name varchar(20),
  8. min_s int,
  9. max_s int,
  10. sum_money int);
  11.  
  12. insert into etltable values
  13. ('A',1,100),
  14. ('A',2,200),
  15. ('A',3,300),
  16. ('A',8,400),
  17. ('A',9,500),
  18. ('B',1,100),
  19. ('B',2,500),
  20. ('B',5,600);
  21.  
  22. 目标表结果应该是这样
  23. A 1 3 600
  24. A 8 9 900
  25. B 1 2 600
  26. B 5 5 600
  27.  
  28. 解答:
  29. select name,
  30. min(seq) as min_s,
  31. max(seq) as max_s,
  32. sum(money) as money
  33. from (
  34. select
  35. *,
  36. seq-row_number() over (partition by name order by name) as rn2--连续的差值会相同
  37. from etltable
  38. ) a group by name,rn2--连续的差值相同,按照这个分组即可
  39. order by name

  

  1. 题目二:
  2. with aa
  3. as (
  4. select 1 uid, '2015-6-1 8:20:00' as login_time union all
  5. select 1 uid, '2015-6-2 7:20:05' as login_time union all
  6. select 1 uid, '2015-6-3 21:20:30' as login_time union all
  7. select 2 uid, '2015-6-1 8:10:00' as login_time union all
  8. select 2 uid, '2015-6-3 8:20:00' as login_time union all
  9. select 2 uid, '2015-6-4 18:20:00' as login_time union all
  10. select 1 uid, '2015-6-5 9:20:00' as login_time union all
  11. select 1 uid, '2015-6-6 16:20:00' as login_time union all
  12. select 3 uid, '2015-6-1 8:20:00' as login_time union all
  13. select 1 uid, '2015-6-7 12:20:00' as login_time union all
  14. select 1 uid, '2015-6-8 23:20:00' as login_time union all
  15. select 3 uid, '2015-6-2 8:20:00' as login_time union all
  16. select 3 uid, '2015-6-3 2:20:00' as login_time
  17.  
  18. )
  19.  
  20. select
  21. uid,min(ds) as min_s,max(ds) as max_s,sum(1) cnt
  22. from (
  23. select * ,
  24. day(login_time) ds,
  25. day(login_time)-row_number() over (partition by uid order by login_time) as rn
  26. from aa
  27. ) a
  28. group by uid,rn

(Sqlserver)sql求连续问题的更多相关文章

  1. 求连续出现5次以上的值,并且取第5次所在id

    关键字:求连续出现5次以上的值,并且取第5次所在id 关键字:求在某列连续出现N次值的的数据,并且取第M次出现所在行 需求,求连续出现5次以上的值,并且取第5次所在id SQL SERVER: --测 ...

  2. 求连续最大子序列积 - leetcode. 152 Maximum Product Subarray

    题目链接:Maximum Product Subarray solutions同步在github 题目很简单,给一个数组,求一个连续的子数组,使得数组元素之积最大.这是求连续最大子序列和的加强版,我们 ...

  3. Sqlserver Sql Agent Job 只能同时有一个实例运行

    Sqlserver Sql Agent中的Job默认情况下只能有一个实例在运行,也就是说假如你的Sql Agent里面有一个正在运行的Job叫"Test Job",如果你现在再去启 ...

  4. 用SQL求1到N的质数和

    今天在百度知道中,遇到了一位朋友求助:利用sql求1到1000的质数和.再说今天周五下午比较悠闲,我就在MSSQL 2008中写了出来,现在分享在博客中,下面直接贴代码: declare @num i ...

  5. 求连续数字的和------------------------------用while的算法思想

    前端代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.as ...

  6. SQLSERVER SQL性能优化技巧

    这篇文章主要介绍了SQLSERVER SQL性能优化技巧,需要的朋友可以参考下 1.选择最有效率的表名顺序(只在基于规则的优化器中有效)       SQLSERVER的解析器按照从右到左的顺序处理F ...

  7. sqlserver sql优化案例及思路

    始sql: SELECT TOP 100 PERCENT ZZ.CREW_NAME AS 机组, ZZ.CREW_ID, AA.年度时间, CC.当月时间, DD.连续七天时间 AS 最近七天 FRO ...

  8. 一个SQL查询连续三天的流量100以上的数据值【SQql Server】

    题目 有一个商场,每日人流量信息被记录在这三列信息中:序号 (id).日期 (date). 人流量 (people).请编写一个查询语句,找出高峰期时段,要求连续三天及以上,并且每天人流量均不少于10 ...

  9. sql求日期

    2.求以下日期SQL: 昨天 select convert(varchar(10),getdate() - 1,120) 明天 select convert(varchar(10),getdate() ...

随机推荐

  1. python序列(七)序列操作的常用内置函数

    1.len(列表):返回:列表中的元素个数,同样适用于元组.字典.集合.字符串等. max(列表).min(列表):返回列表中的最大或最小元素同样适用于元组.字典.集合.range对象等. sum(列 ...

  2. JVM笔记【1】-- 运行时数据区

    目录 (一)java内存区域管理 1.1 程序计数器 1.2 虚拟机栈 1.3 本地方法栈 1.4 java堆 1.5 方法区 1.5.1 运行时常量池 (二)直接内存 (一)java内存区域管理 C ...

  3. 我的 2020:出书、办签售会、发展 VS Code 中文社区、成为开源先锋、全网 10 万粉丝、10 场演讲、内推 21 人、955.WLB 发扬光大

    感觉写 2019 年终总结还是在不久之前.转眼间,2020 已经接近尾声了.是时候来写写 2020 年的年终总结了. 出书 今年最高兴的事情之一,就是出了全球首本 VS Code 中文书 -- < ...

  4. Dubbo SPI源码解析①

    目录 0.Java SPI示例 1.Dubbo SPI示例 2.Dubbo SPI源码分析 ​ SPI英文全称为Service Provider Interface.它的作用就是将接口实现类的全限定名 ...

  5. Markdown高级使用之流程图

    流程图在Markdown中的的表现形式就是代码块,代码块语言标记为mermaid.主要内容大体分为:方向.节点.节点间的连接关系,下面就围绕这三个点来整理. mermaid支持流程图.甘特图和时序图, ...

  6. Centos7 keepalived 修改日志路径

    Keepalived默认所有的日志都是写入到/var/log/message下的,由于message的日志太多了,而Keepalived的日志又很难分离出来,所以本文提供了一个调整Keepalived ...

  7. Eclipse导入外部jar包的步骤

    (1)首先在项目的跟目录下先建一个名字为lib的文件夹,通常外部导入的jar包都放在这个文件夹下面. (2)将需要用到的jar包复制到lib文件夹下面. (3)在项目中导入jar包 右键项目,选择Bu ...

  8. linux based bottlerocket-os

    linux based bottlerocket-os 概要 aws开源,专注与运行容器的linux os 参看 https://github.com/bottlerocket-os

  9. jquery-from+php 文件上传

    闲话不多说上代码 前端代码 <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charse ...

  10. Netty源码解析 -- 对象池Recycler实现原理

    由于在Java中创建一个实例的消耗不小,很多框架为了提高性能都使用对象池,Netty也不例外. 本文主要分析Netty对象池Recycler的实现原理. 源码分析基于Netty 4.1.52 缓存对象 ...