有表格存放每个顾客拥有的票。现在想查看哪些顾客的票不是连号,即有间隔。并找出间隔的开始与结束数字。
create table tickets (
buyer_name char(5) not null,
ticket_nbr int default 1 not null
check (ticket_nbr>0),
primary key (buyer_name,ticket_nbr)
)
insert into tickets values('one',2),('one',3),('one',4),('two',4),('three',1),('three',2),('three',3),('three',5)
,('four',1),('four',6),('four',7),('four',9),('five',10),('five',1)
解惑1:
 
select t.buyer_name from tickets t group by t.buyer_name having not (max(t.ticket_nbr)-min(t.ticket_nbr)<=count(*))
解惑2:
如果ticket中的数字跨越范围不是特别大,则可以 使用序列表,把min(seq)到max(seq)存到表sequence(seq int)表中,找出各顾客在最大值和最小值之间的序列内存在于sequence表中的数字。
解惑3:
创建视图,给每个顾客的票从小到大给出一个序号。对比上下两个号码的值,如果之间的差的绝对值部位1说明他们之间不连续。
create view tickets_v(buyer_name,ticket_nbr,ord) as 
(select  t.buyer_name,t.ticket_nbr,rank() over ( partition by buyer_name order by ticket_nbr ) as ord from tickets  t)
select t1.buyer_name, t1.ticket_nbr+1 as start_nbr,t2.ticket_nbr-1 end_nbr from tickets_v t1,tickets_v t2 where t1.buyer_name=t2.buyer_name and  t1.ord=t2.ord-1  and abs(t1.ticket_nbr-t2.ticket_nbr)<>1

SQL解决数值间隔问题的更多相关文章

  1. SQL 中数值型数据截取以及四舍五入

    SQL 中数值型数据截取及四舍五入 例一: -- 将两个数值分别截取只保留两位小数 ( 注意此时字段默认为 decimal ) select CAST ( 10.097 as decimal ( 10 ...

  2. Mysql自定义函数之------------This function has none of DETERMINISTIC, NO SQL解决办法

    This function has none of DETERMINISTIC, NO SQL解决办法 创建存储过程时 出错信息: ERROR 1418 (HY000): This function ...

  3. 开启bin-log日志mysql报错:This function has none of DETERMINISTIC, NO SQL解决办法

    开启bin-log日志mysql报错:This function has none of DETERMINISTIC, NO SQL解决办法: 创建存储过程时 出错信息: ERROR 1418 (HY ...

  4. This function has none of DETERMINISTIC, NO SQL解决办法

    This function has none of DETERMINISTIC, NO SQL解决办法 创建存储过程时 出错信息: ERROR 1418 (HY000): This function ...

  5. This function has none of DETERMINISTIC, NO SQL 解决办法

    在恢复mysql数据库时提示 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its decl ...

  6. 64位Win7安装+32位Oracle + PL/SQL 解决方法

    软件景象:64位win7.32位Oracle 10g. PL/SQL 9.0.4.1644 媒介:以前开辟用的都是32位体系,忽然换到64位上,安装景象真的有点麻烦了,尤其对于PL/SQL只支撑32位 ...

  7. sql的强大功能(看一条sql解决的复杂业务)

        一条sql语句解决的复杂业务,请往下看:     业务介绍:一个单位有多个立项(立项信息表里有单位id),每个立项可能被预警多次(预警信息表里的uuid字段的值里包含有立项id或单位id),每 ...

  8. PL/SQL联系oracle成功可以sql解决的办法是检查表的名称无法显示

    有时,因为机器突然断电或其他原因PL/SQL它甚至不能在数据库表后显示.序列和其它元素.使用SQL Windows运行查询一般查询,登录或同样的现象再次. 我是不是可以解决因重复登录的猜测是,PLSQ ...

  9. [Linq To Sql]解决join时的Collation冲突

    背景 现在两表 A:

随机推荐

  1. MyBatis主键生成器Jdbc3KeyGenerator(二)

    上一篇博客MyBatis主键生成器KeyGenerator(一)中我们大体介绍了主键生成器的接口及配置等,接下来我们介绍一下KeyGenerator的实现类Jdbc3KeyGenerator Jdbc ...

  2. EBS条形码打印

    Oracle  提供两种方式实现 128 码的编码 第一种方式是使用 Reports Builder 实现对 128 码编码, 在 Metalink 305090.1[1]  有 比较详尽的描述,其中 ...

  3. javascript之DOM编程通过html元素的标签属性找节点

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. Java将网络地址对应的图片转成本地的图片

     只知道浏览器使用的是HTTP协议,那么如何将网络资源使用JavaHTTP下载下来呢! 这只是一个非常简单的小示例,只是不想每次碰到关于此方面的内容忘了就无从下手! 示例创建HttpURLConn ...

  5. Java 对象在堆中的内存结构

    翻译人员: 铁锚 翻译日期: 2013年11月8日 原文链接:  What do Java objects look like in memory during run-time? 我们知道,函数每次 ...

  6. Android 使用com.j256.ormlite

    在web开发中经常采用的hibernate,在android也提供了一个ormlite 导入所需jar包后 /** * SQLiteHelperOrm.java * 版权所有(C) 2014 * 创建 ...

  7. SpriteBuilder中CCMotionStreak提示图片文件找不到

    今天写代码时遇到上述问题,代码如下: player.streak = [CCMotionStreak streakWithFade:3.f minSeg:1 width:30 color:[CCCol ...

  8. 应届生求职:IT博客真能当技术型职位的求职利器?

    正值一年一度的大学毕业季,面对严峻的就业形势,700万大学毕业生,不到三成的签约率,可真是苦煞了没有工作经验,也没有项目经验的应届毕业生们.拿什么打动面试官?成绩?特长?社会实践?如果这些都不能让阅读 ...

  9. [问与答]Python 中 __all__ 的作用 ?

    你要是看Python的源码或者相关框架的源码,总是在 __init__.py 或者是源文件的开头看到一个 __all__ 变量的定义,今天就说说它的作用. orangleliu 问题出处 Can so ...

  10. Volley学习小结

    1.概述 volley英文即是"齐射,并发",是谷歌在2013年推出的网络通信库,有如下特点: [1]通信更快,更简单 [2]Get.Post网络请求以及网络数据图像的高效的异步请 ...