Oracle 查询优化改写(第七章)

这篇具有很好参考价值的文章主要介绍了Oracle 查询优化改写(第七章)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第七章 日志运算

1 加减年月日时分秒 +替换为-

--加减年月日时分秒 +替换为-
SELECT Add_Months(SYSDATE, 5 * 12) AS 加5年,
       Add_Months(SYSDATE, 5) AS 加5月,
       SYSDATE + 5 AS 加5天,
       SYSDATE + 5 / 24 AS 加5小时,
       SYSDATE + 5 / 24 / 60 AS 加5分钟,
       SYSDATE + 5 / 24 / 60 / 60 AS 加5秒
  FROM Emp;
  

2.日期间隔年月日时分秒

--日期间隔年月日时分秒
SELECT Months_Between(Date1, Date2) / 12 as 年,
       Months_Between(Date1, Date2)  as 月,
       date3 as 日,
       date3*24 时,
       date3*24*60 分,
       date3*24*60*60 秒 
  FROM (SELECT MAX(Hiredate) Date1,
               MIN(Hiredate) Date2,
               MAX(Hiredate) - MIN(Hiredate) Date3
          FROM Emp);
--查询所有员工入职以来的工作期限,用“XX年XX月XX日”的形式表示。
SELECT Ename,
       Trunc(Months_Between(SYSDATE, Hiredate) / 12) || '年' ||
       Trunc(MOD((Months_Between(SYSDATE, Hiredate)), 12)) || '月'||
       trunc(sysdate-add_months(hiredate,Months_Between(SYSDATE, Hiredate))) || '日'
  FROM Emp

3.确定两个日期之间的工作天数

--筛选原始数据
--通过max()和min()转为一行
--枚举两个日期之间的天数要加1,比如1到2是两天,有两条数据(2-1)+1
--通过与T5OO做笛卡尔积枚举30天的所有日期。
--根据这些日期得到对应的工作日信息。
--进行过滤操作。
create table T500 As select level as ID from dual connect by level<=500

SELECT SUM(CASE
             WHEN To_Char(Min_Hd + T500.Id - 1,
                          'DY',
                          'NLS_DATE_LANGUAGE = American') IN ('SAT', 'SUN') THEN
              0
             ELSE
              1
           END) AS 工作天数
  FROM (SELECT MIN(Hiredate) AS Min_Hd, MAX(Hiredate) AS Max_Hd
          FROM Emp
         WHERE Ename IN ('BLAKE', 'JONES')) x,
       T500
 WHERE T500.Id <= Max_Hd - Min_Hd + 1;

SELECT COUNT(*)
  FROM (SELECT 日期,
               To_Char(日期, 'DY', 'NLS_DATE_LANGUAGE = American') AS Dy
          FROM (SELECT Min_Hd + (T500.Id - 1) AS 日期
                  FROM (SELECT MIN(Hiredate) AS Min_Hd,
                               MAX(Hiredate) AS Max_Hd
                          FROM Emp
                         WHERE Ename IN ('BLAKE', 'JONES')) x,
                       T500
                 WHERE T500.Id <= ((Max_Hd - Min_Hd) + 1)))
 WHERE Dy NOT IN ('SAT', 'SUN');

4.确定一年中周内各日期的次数

Oracle 查询优化改写(第七章)文章来源地址https://www.toymoban.com/news/detail-503099.html

WITH X0 AS
  (SELECT To_Date('2013-01-01', 'yyyy-mm-dd') AS 年初 FROM Dual),
 X1 AS
  (SELECT 年初, Add_Months(年初, 12) AS 年底 FROM X0),
 X2 AS
  (SELECT Next_Day(年初 - 1, LEVEL) AS D1, Next_Day(年底 - 8, LEVEL) AS D2
     FROM X1
   CONNECT BY LEVEL <= 7)
 SELECT To_Char(D1, 'dy') AS 星期, ((D2 - D1) / 7 + 1) AS 天数
   FROM X2;

5.确定当前记录和下一条记录之间相差的天数

SELECT Ename, Hiredate, Next_Hd, Next_Hd - Hiredate Diff
  FROM (SELECT Deptno,
               Ename,
               Hiredate,
               Lead(Hiredate) Over(ORDER BY Hiredate) Next_Hd
          FROM Emp
         WHERE Deptno = 10);

到了这里,关于Oracle 查询优化改写(第七章)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第七章金融中介

             金融中介是通过向资金盈余者发行 间接融资合约( 如存款单),并和资金短缺者达成 间接投资合约 (发放信贷)或购买其发行的证券,在资金供求方之间融通资金,对资金跨期、跨域进行优化配置的金融机构。         金融体系由金融市场和金融中介构成,以银行业为

    2024年02月04日
    浏览(55)
  • 第七章 函数矩阵

    和矩阵函数不同的是,函数矩阵本质上是一个矩阵,是以函数作为元素的矩阵。 矩阵函数本质上是一个矩阵,是以矩阵作为自变量的函数。 函数矩阵和数字矩阵的运算法则完全相同。 不过矩阵的元素 a i j ( x ) a_{ij}(x) a ij ​ ( x ) 需要是闭区间 [ a , b ] [a,b] [ a , b ] 上的实函数

    2024年02月04日
    浏览(58)
  • 第七章 图论

    第七章 图论 一、数据结构定义 图的邻接矩阵存储法 图的邻接表存储法 把所有节点存储为节点数组,每个节点里有自己的数据和一个边指针,这个边指针相当于一个链表的头指针,这个链表里存放所有与这个节点相连的边,边里存放该边指向的节点编号和下一条边指针 图的

    2024年02月14日
    浏览(89)
  • 数据结构第七章

    图(Graph)G由两个集合V和E组成,记为G=(V, E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常分别表示图G的顶点集合和边集合,E(G)可以为空集。若EG)为空,则图G只有顶点而没有边。 子图:假设有两个图G=(V,E)和G1=(V1,E1);如果V1

    2024年02月03日
    浏览(63)
  • 第七章 测试

    7.1.1 选择程序设计语言 1. 计算机程序设计语言基本上可以分为汇编语言和高级语言 2. 从应用特点看,高级语言可分为基础语言、结构化语言、专用语言 01 有理想的模块化机制; 02 可读性好的控制结构和数据结构; 03 便于调试和提高软件可靠性; 04 编译程序发现程序错误的

    2024年02月08日
    浏览(77)
  • [JavaScript] 第七章 对象

    🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 [Java项目实战] 介绍Java组件安装、使用;手写框架等 [Aws服务器实战] Aws Linux服务器上操作nginx、git、JDK、Vue等 [Java微服务

    2024年02月02日
    浏览(129)
  • 第七章 面向对象编程(基础)

    (1)类是抽象的,概念的,代表一类事物,比如人类、猫类... 即它是数据类型。 (2)对象是具体的,实际的,代表一个具体事物,即实例。 (3)类是对象的模板,对象是类的一个个体,对应一个实例。 属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对

    2024年02月06日
    浏览(84)
  • OpenCV:第七章、图像变换

    目录 第七章:图像变换 7.1、基于OpenCV的边缘检测 7.1.1、一般步骤 1、滤波 2、增强 3、检测 7.1.2、canny算子 1、canny算子简介 2、canny边缘检测的步骤 7.2、霍夫变换  7.2.2、OpenCV中的霍夫线变换 7.2.3、霍夫线变换原理        7.2.4、标准霍夫变换:HoughLines()函数    7.2.5、累计概率

    2024年02月03日
    浏览(68)
  • Flink第七章:状态编程

    Flink第一章:环境搭建 Flink第二章:基本操作. Flink第三章:基本操作(二) Flink第四章:水位线和窗口 Flink第五章:处理函数 Flink第六章:多流操作 Flink第七章:状态编程 这次我们来学习Flink中的状态学习部分,创建以下scala文件 这个文件里有几个常用的状态创建 按键分区中值状态编程案

    2024年02月06日
    浏览(65)
  • C国演义 [第七章]

    力扣链接 给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1: 输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7] 输出:3 解释:长度最长的公共子数组是 [3,2,1] 。 示例 2: 输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0] 输出:5 提示: 1 = nums1.length, num

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包