Oracle SQL - HAVING和分析函数的执行顺序

devtools/2024/10/20 11:41:12/

分析函数是基于最终的结果集进行开窗的,所以HAVING比分析函数先执行

 ↓ 没有HAVING时,MAX(col3) over()是A2

sql">SQL> WITH subq_a AS2   (SELECT 'A' col1, 'A1' col2, 10 col33      FROM dual4    UNION ALL5    SELECT 'A' col1, 'A1' col2, -5 col36      FROM dual7    UNION ALL8    SELECT 'A' col1, 'A2' col2, 10 col39      FROM dual10    UNION ALL11    SELECT 'A' col1, 'A2' col2, -15 col312      FROM dual)13  SELECT col1, col2, SUM(col3) s_col3, MAX(col2) over() x_col214    FROM subq_a15   GROUP BY col1, col216  /COL1 COL2     S_COL3 X_COL2
---- ---- ---------- ------
A    A1            5 A2
A    A2           -5 A2

 ↓ 有HAVING时,分析函数在HAVING执行过滤后的结果集上开窗计算结果,MAX(col3) over()变成A1

sql">SQL> WITH subq_a AS2   (SELECT 'A' col1, 'A1' col2, 10 col33      FROM dual4    UNION ALL5    SELECT 'A' col1, 'A1' col2, -5 col36      FROM dual7    UNION ALL8    SELECT 'A' col1, 'A2' col2, 10 col39      FROM dual10    UNION ALL11    SELECT 'A' col1, 'A2' col2, -15 col312      FROM dual)13  SELECT col1, col2, SUM(col3) s_col3, MAX(col2) over() x_col214    FROM subq_a15   GROUP BY col1, col216  HAVING SUM (col3) > 017  /COL1 COL2     S_COL3 X_COL2
---- ---- ---------- ------
A    A1            5 A1


http://www.ppmy.cn/devtools/6762.html

相关文章

目标检测YOLO实战应用案例100讲-复杂背景下的红外弱小目标检测方法研究(续)

目录 红外弱小目标成像特性分析及检测效果评价 2.1概述 2.2红外成像过程

【UE 材质】序列图动画、波动效果、颜色切换效果

目录 一、序列图动画 方法1 方法2 二、波动效果 三、颜色切换效果 一、序列图动画 方法1 新建一个材质,在材质中添加一个纹理采样节点,使用纹理“T_Explosion_SubUV” 由于该序列图是6*6的,因此我们可以通过将纹理坐标节点乘1/6得到…

Python 数据结构和算法实用指南(二)

原文:zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d 译者:飞龙 协议:CC BY-NC-SA 4.0 第四章:列表和指针结构 我们已经在 Python 中讨论了列表,它们方便而强大。通常情况下,我们使用 Python…

Python 命令行参数解析库 docopt

Docopt是一个Python库,它允许开发者使用自然语言来定义命令行接口(CLI)。它通过解析用户输入的命令行参数,与预先定义的自然语言规则进行匹配,从而实现命令行参数的自动解析。Docopt的语法简洁、直观,使得编…

【C++类和对象】const成员函数及流插入提取

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

第十章 高级纹理

立方体纹理 立方体纹理是环境映射的一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了一层金属一样反射出周围的环境。 立方体纹理一共包含6张图形,这些图像对应了立方体六个面。对立方体纹理采样我们需要提供一个三维的纹理坐标,这个…

windows安装多版本node.js

首先,你需要安装 nvm。如果你还没有安装 nvm,你可以在 bash 或者其他类似的 shell 中运行以下命令进行安装: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash这将下载并运行 nvm 的安装脚本。注意&#xf…

2024年前端技术发展趋势

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…