读SQL进阶教程笔记08_处理数列
2023-04-05 08:29:58 来源:博客园
(资料图片)
1.处理有序集合也并非SQL的直接用途
1.1.SQL语言在处理数据时默认地都不考虑顺序
2.处理数据的方法有两种
2.1.第一种是把数据看成忽略了顺序的集合
2.2.第二种是把数据看成有序的集合
2.2.1.首先用自连接生成起点和终点的组合
2.2.2.其次在子查询中描述内部的各个元素之间必须满足的关系
2.2.2.1.要在SQL中表达全称量化时,需要将全称量化命题转换成存在量化命题的否定形式,并使用NOT EXISTS谓词
3.生成连续编号
3.1.序列对象(sequence object)
3.1.1.CONNECT BY(Oracle)
3.1.2.WITH子句(DB2、SQL Server)
3.1.3.依赖数据库实现的方法
3.2.示例
3.2.1.
3.2.1.1.--求连续编号(1):求0~99的数
SELECT D1.digit + (D2.digit * 10) AS seq FROM Digits D1 CROSS JOIN Digits D2 ORDER BY seq;
3.2.1.2.--求连续编号(2):求1~542的数
SELECT D1.digit + (D2.digit * 10) + (D3.digit * 100) AS seq FROM Digits D1 CROSS JOIN Digits D2 CROSS JOIN Digits D3 WHERE D1.digit + (D2.digit * 10) + (D3.digit * 100) BETWEEN 1 AND 542 ORDER BY seq;
3.2.1.3.--生成序列视图(包含0~999)
CREATE VIEW Sequence (seq) AS SELECT D1.digit + (D2.digit * 10) + (D3.digit * 100) FROM Digits D1 CROSS JOIN Digits D2 CROSS JOIN Digits D3;
3.2.1.3.1.--从序列视图中获取1~100
SELECT seq FROM Sequence WHERE seq BETWEEN 1 AND 100 ORDER BY seq;
3.3.冯·诺依曼的方法使用递归集合定义自然数,先定义0然后得到1,定义1然后得到2,是有先后顺序的
3.3.1.适用于解决位次、累计值等与顺序相关的问题
3.4.这里的解法完全丢掉了顺序这一概念,仅把数看成是数字的组合。这种解法更能体现出SQL语言的特色
4.求全部的缺失编号
4.1.示例
4.1.1.--EXCEPT版
SELECT seq FROM Sequence WHERE seq BETWEEN 1 AND 12 EXCEPT SELECT seq FROM SeqTbl;
4.1.1.1.--NOT IN版
SELECT seq FROM Sequence WHERE seq BETWEEN 1 AND 12 AND seq NOT IN (SELECT seq FROM SeqTbl);
4.1.2.--动态地指定连续编号范围的SQL语句
SELECT seq FROM Sequence WHERE seq BETWEEN (SELECT MIN(seq) FROM SeqTbl) AND (SELECT MAX(seq) FROM SeqTbl) EXCEPT SELECT seq FROM SeqTbl;
4.1.2.1.查询上限和下限未必固定的表时非常方便
4.1.2.2.两个自查询没有相关性,而且只会执行一次
4.1.2.3.如果在“seq”列上建立索引,那么极值函数的运行可以变得更快速
5.座位预订
5.1.三个人能坐得下吗
5.1.1.
5.1.1.1.--找出需要的空位(1):不考虑座位的换排
SELECT S1.seat AS start_seat, "~", S2.seat AS end_seat FROM Seats S1, Seats S2 WHERE S2.seat = S1.seat + (:head_cnt -1) --决定起点和终点 AND NOT EXISTS (SELECT * FROM Seats S3 WHERE S3.seat BETWEEN S1.seat AND S2.seat AND S3.status <>’未预订’);
5.1.1.1.1.“:head_cnt”是表示需要的空位个数的参数
5.1.1.1.2.如果不减1,会多取一个座位
5.1.1.2.第一步:通过自连接生成起点和终点的组合
5.1.1.2.1.S2.seat = S1.seat + (:head_cnt-1)的部分
5.1.1.2.2.排除掉了像1~8、2~3这样长度不是3的组合
5.1.1.3.第二步:描述起点到终点之间所有的点需要满足的条件
5.1.1.3.1.序列内的点需要满足的条件“所有座位的状态都是‘未预订’”
5.1.1.4.--找出需要的空位(2):考虑座位的换排
SELECT S1.seat AS start_seat, "~", S2.seat AS end_seat FROM Seats2 S1, Seats2 S2 WHERE S2.seat = S1.seat + (:head_cnt -1) --决定起点和终点 AND NOT EXISTS (SELECT * FROM Seats2 S3 WHERE S3.seat BETWEEN S1.seat AND S2.seat AND ( S3.status <>’未预订’ OR S3.row_id <> S1.row_id));
5.1.1.4.1.所有座位的状态都是‘未预订’,且行编号相同
5.2.最多能坐下多少人
5.2.1.
5.2.1.1.条件1:起点到终点之间的所有座位状态都是“未预订”
5.2.1.2.条件2:起点之前的座位状态不是“未预订”
5.2.1.3.条件3:终点之后的座位状态不是“未预订”
5.2.2.--第一阶段:生成存储了所有序列的视图
CREATE VIEW Sequences (start_seat, end_seat, seat_cnt) AS SELECT S1.seat AS start_seat, S2.seat AS end_seat, S2.seat - S1.seat + 1 AS seat_cnt FROM Seats3 S1, Seats3 S2 WHERE S1.seat <= S2.seat --第一步:生成起点和终点的组合 AND NOT EXISTS --第二步:描述序列内所有点需要满足的条件 (SELECT * FROM Seats3 S3 WHERE ( S3.seat BETWEEN S1.seat AND S2.seat AND S3.status <>’未预订’) --条件1的否定 OR (S3.seat = S2.seat + 1 AND S3.status =’未预订’) --条件2的否定 OR (S3.seat = S1.seat -1 AND S3.status =’未预订’)); --条件3的否定
5.2.2.1.--第二阶段:求最长的序列
SELECT start_seat, "~", end_seat, seat_cnt FROM Sequences WHERE seat_cnt = (SELECT MAX(seat_cnt) FROM Sequences);
6.单调递增和单调递减
6.1.示例
6.1.1.
6.1.2.--生成起点和终点的组合的SQL语句
SELECT S1.deal_date AS start_date, S2.deal_date AS end_date FROM MyStock S1, MyStock S2 WHERE S1.deal_date < S2.deal_date;
6.1.2.1.--求单调递增的区间的SQL语句:子集也输出
SELECT S1.deal_date AS start_date, S2.deal_date AS end_date FROM MyStock S1, MyStock S2 WHERE S1.deal_date < S2.deal_date --第一步:生成起点和终点的组合 AND NOT EXISTS ( SELECT * --第二步:描述区间内所有日期需要满足的条件 FROM MyStock S3, MyStock S4 WHERE S3.deal_date BETWEEN S1.deal_date AND S2.deal_date AND S4.deal_date BETWEEN S1.deal_date AND S2.deal_date AND S3.deal_date < S4.deal_date AND S3.price >= S4.price);
6.1.2.1.1.--排除掉子集,只取最长的时间区间
SELECT MIN(start_date) AS start_date, --最大限度地向前延伸起点 end_date FROM (SELECT S1.deal_date AS start_date, MAX(S2.deal_date) AS end_date --最大限度地向后延伸终点 FROM MyStock S1, MyStock S2 WHERE S1.deal_date < S2.deal_date AND NOT EXISTS (SELECT * FROM MyStock S3, MyStock S4 WHERE S3.deal_date BETWEEN S1.deal_date AND S2.deal_date AND S4.deal_date BETWEEN S1.deal_date AND S2.deal_date AND S3.deal_date < S4.deal_date AND S3.price >= S4.price) GROUP BY S1.deal_date) TMP GROUP BY end_date;
标签:
- 加快虚拟仿真实训基地建设 启动职业学校信息化建设试点很必要
- “双减”后如何在满足学生多样需求方面做“加法”?
- 处于生理活跃期且心理发展不成熟 高校开设公共卫生必修课很必要
- 打造高水平人才队伍 爱与希望的种子正在西部地区发芽
- 河南封丘“学生餐后呕吐腹泻”调查:配餐点“未批先餐” 家长盼说法
知识
- 他把银行卡卖给骗子,“黑吃黑”“截胡”十万元
- “老司机”4S店试驾豪车 结果油门当刹车撞了
- 新开工改造城镇老旧小区5.34万个
- 发动巡河志愿者2万余名 “用心护好每一条河”
- 假客服的套路:伪装成大平台客服,层层布局引人上钩
人物
- 读SQL进阶教程笔记08_处理数列
- 德比味道,尤文国米大规模冲突,夸德拉多、汉达赛后互掐双双染红-快讯
- 裕承科金(00279.HK):4月4日南向资金减持107.4万股
- 焦点讯息:养老院护理等级与服务内容(仅供参考)
- 4月04日21时福建宁德疫情最新通报及宁德新冠疫情最新情况
- 深圳推进城中村住房改造 打造年轻人宜居社区 全球快报
- 靠烟吃烟,受贿1698万余元,国家烟草专卖局原党组成员潘家华一审获刑11年-世界时讯
- 图们农机“送检下乡” 护航春耕生产
- 【天天新视野】澳大利亚将在政府设备上移除TikTok,外交部:已向澳方提出严正交涉
- 外资看好中国经济前景 2023经济市场现状及前景分析_环球短讯
- 中国气象局:今年3月全国平均气温为1961年来历史第3高
- 环球热推荐:正版unturned怎么联机_unturned怎么和好友联机
- 普通高等教育十一五国家级规划教材:自然地理学_对于普通高等教育十一五国家级规划教材:自然地理学简单介绍
- 遇见你丨“3元理发店” 19年不涨价 唐奶奶一个承诺必守终生_头条焦点
- 《莱莎的炼金工房3》怪物弱点一览 全怪物弱点表-今日精选
- 全球快报:立秋后可以种豆角吗?立秋后种豆角晚吗
- 【三肖】夢之河 番外 三家家事 聚焦
- 环球报道:早报:电信麦芒20正式发布 realme新机勇夺预售冠军
- “土地超市+项目投资” 海南自贸港海口经济圈发布90宗地块|当前资讯
- 身影如峰守国门——第二届“十大国门卫士”群像速写
- 快播:生猪一季度供大于求 业内预计去产能尚未结束
- 童眼看徐州绘画_童眼
- 铝加工企业利用期市稳定经营|每日聚焦
- 密码箱怎么开锁才不会锁住(密码箱怎么开)
- 快讯 | 川宁生物:2022年营业收入38.21亿元;净利润4.12亿元
- 贵州省纪委监委关于6起党员和公职人员酒驾醉驾典型问题的通报|环球今头条
- 天天热文:记者:曼联求购者希望本周收到回复,明确收购进程的下一步
- 设研院:第一季度“设研转债”转股321股
- 每日头条!全国重点地区棕榈油商业库存约91.93万吨
- 天天观天下!兴发集团:副总经理倪小山辞职,将被公司返聘为高级技术顾问
- 3月份交过水费4月又将收到水费通知,别慌!郑州供水抄表用户由仨月改成俩月一抄
- 中达证券:3月百强房企累计销售增速回正,带押过户全面推进_头条
- 茅台诉多名被告商标侵权获赔48万
- 现在结婚证怎么办准生证的相关规定有什么?
- 焦点关注:陕西靖边:三月桃花雪 春花别样红
- 世龙实业:关于公司最新股东人数情况敬请关注本公司2023年第一季度报告 关注
- 当前速读:上海6800余套新房即将入市 备案均价约6万元/平方米
- 天天热资讯!5岁男童被羊驼绊倒跨过 动物园:它也有心情不好的时候
- 最新快讯!龙湖御湖境——价格, 户型丨楼盘测评
- 每日消息!iPhone手机换新机的要求(苹果新机换机要求)
- 丰乐种业:3月31日获融资买入1255.96万元,占当日流入资金比例13.09%-世界热议
- 天天微资讯!始于月老终于孟婆的意思_月老和孟婆曾是情人
- 小白一键重装系统v2290_小白一键重装系统-关注
- 理想汽车2023年3月交付20823辆
- 大跌3万亿! 182亿大排名来了,多家巨头下滑!这些机构飙升_最新消息
- 网红圈钱岂能拿军人军装当道具!_当前讯息
- 如何破解wifi密码呢并且显示密码_电脑如何破解wifi密码
- 股票行情快报:纽泰格(301229)3月31日主力资金净买入126.11万元_快报
- 仅售8.09万,这款大牌合资旅行车刚刚上市,比大众蔚领更厚道|世界今热点
- 全球实时:咖啡外卖大涨折射复苏新气象 北京有咖啡店单量翻倍
精彩阅读
- 提分教练·高考提分教材:高考生物|全球通讯
- 2018年几号入伏_2018年什么时候入伏
- 避坑指南|暑期夏令营怕选错?是你还没用到这6招!-全球时快讯
- 环球头条:教师招聘启事范文50字(实用17篇)
- 泉州市优化营商环境大会在丰泽引发热烈反响_每日视讯
- 全市统一 厦门市水库综合管理平台将在今年汛期试运行 世界速讯
- Canalys:2022 年第四季度,全球网络安全规模近 200 亿美元|当前热门
- 贵州梵途科技获评“国家高新技术企业”
- 满江红古诗岳飞(满江红古诗)_微速讯
- 世界新消息丨“反诈竞走队”出动!
- 奈飞宣布将重组电影部门,减少电影产量-天天最资讯
- 天天微资讯!女子带孩子吃饭故意往菜里扔头发 店家看监控发现:网友吐槽教坏孩子
- 环球快资讯丨全球首个!天津工业生物所发布基于图数据库的大肠杆菌调控代谢知识图谱
- 许昌市襄城县山头店镇:春播春管正当时-热门看点
- 刚刚,发射成功!
- 公考粉笔980|网盘在线学习及下载
- 环球看点!锂价大起大落的忧虑:锂电产业链洗牌或难以避免
- 真情耀中华 最新消息
- 天天热消息:[云原生]接口安全方案提供和实践
- 王玮晨盛赞GALA:这个人一到季后赛就续挂 TT则清算失败
- 天天简讯:漳州长泰:萌娃行“开笔礼” 感受传统文化魅力
- 环球今头条!唐朝魏征的这句话怎么读_唐朝魏征的这句话
- 澄迈推行“数字政务大厅” 提升基层群众办事效率_世界焦点
- 国米和巴斯托尼续约合同已搁置 两大豪门将对其展开竞争_天天热头条
- 环球动态:德国切莫误解“独立的中国能力”
- 今日看点:虹桥镇社区事务受理服务中心获评“5A”
- 缅怀革命先烈,弥牟小学学子传承红色精神
- 现货黄金交易策略:多空陷入“拉锯战”,关注初请数据和美联储官员讲话
- 千亿通信龙头 跳水!冲上热搜 苹果CEO库克 现身这家上海公司!_当前速递
- 微资讯!广东中考报名号查询_中考报名号查询
- 沪铜继续上冲驱动力不强 涨势有所收窄
- 下个月,南昌计划举办8场展会
- 明源云财报发布后股价反弹;前搜狗 CEO 王小川入局人工智能-热门
- 华洲数控榫槽机您值得拥有__数控榫槽机_华洲数控发布|每日聚焦
- 交流电源和直流电源的区别_怎么区别交流电源和直流电源 环球微头条
- 今日快讯:江苏无锡:浪漫夜樱醉游人
- subtotal函数中的9和109_subtotal 9代表什么
- 【环球新要闻】湖北省十六运会火种汇集暨火炬传递启动仪式在宜昌隆重举行
- 西安市新城区幸福林带板块推出1宗商住用地 起始价14.38亿元_世界今日报
- 榜额1.3亿元!常州市36项科技攻关重大技术需求发榜
- 成都“第三水源”工程三坝水库开工建设
- “一盔一带”保安全 房山交警在行动
- 世界速讯:浩柏国际(08431.HK)3月29日收盘跌0.4%
- 扁平疣治疗(扁平疣的最好治疗方法)|环球时快讯
- 贵妃芒是不是要等黄了才能吃 贵妃芒颜色变成什么样就可以吃了_天天动态
- 每日视点!追梦谈惜败森林狼后对球队影响:本场前18分钟 我们打得要死不活
- 辽宁机电职业技术学院优势专业有哪些 山西医科大学晋祠学院优势专业有哪些_环球看点
- 国内咖啡频现融资,新一轮混战开始?
- 环球动态:壁挂炉市场业绩触底,冷凝炉逆势增长
- 华映科技:3月28日融资买入169.38万元,融资融券余额8587.75万元 世界动态