強啊!Oracle Database 23aiOracle Database 23ai:使用列別名進行分組排序!

大家好,這里是架構資源棧!點擊上方關注,添加“星標”,一起學習大廠前沿架構!

從 Oracle Database 23ai 開始,您可以在 GROUP BY 和 HAVING 子句中直接使用列別名。此功能在早期版本的 Oracle Database 中不可用。

Oracle 21c 中的示例:

在 Oracle 21c 中,嘗試在 GROUP BY 或 HAVING 子句中使用列別名將導致錯誤:

Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
SQL> SELECT LOWER(owner) AS Malek, SUM(bytes / 1024 / 1024) AS SIZE_MB2    FROM dba_segments3   GROUP BY Malek4  HAVING SIZE_MB > 100;
ERROR at line 4:
ORA-00904: "SIZE_MB": invalid identifier

Enter fullscreen mode Exit fullscreen mode

為了避免 Oracle 21c 中的無效標識符錯誤,您必須重寫查詢,而不使用 GROUP BY 和 HAVING 子句中的別名:

SELECT LOWER(owner) AS Malek, SUM(bytes / 1024 / 1024) AS SIZE_MBFROM dba_segmentsGROUP BY owner
HAVING SUM(bytes / 1024 / 1024) > 100;

Enter fullscreen mode Exit fullscreen mode

Oracle 23ai 中的示例:

在 Oracle 23ai 中,上述兩個查詢均有效,現在可以在 HAVING 子句中直接使用別名 SIZE_MB:

Connected to Oracle Database 23ai Free, Release 23.0.0.0.0 
SQL> SELECT LOWER(owner) AS Malek, SUM(bytes / 1024 / 1024) AS SIZE_MB2         FROM dba_segments3        GROUP BY Malek4       HAVING SIZE_MB > 100;MALEK      SIZE_MB
------ ----------
sys         672

Enter fullscreen mode Exit fullscreen mode

Oracle 23ai 中的其他增強功能:

Oracle 23ai 還引入了在 GROUP BY 子句中使用列位置的功能。要啟用此功能,需要將 group_by_position_enabled 參數設置為 TRUE。具體工作原理如下:

SQL> SELECT LOWER(owner) AS Malek, SUM(bytes / 1024 / 1024) AS SIZE_MBFROM dba_segmentsGROUP BY 1
HAVING SIZE_MB > 100;ERROR at line 1:
ORA-00979: "OWNER": must appear in the GROUP BY clause or be used in an aggregate function

Enter fullscreen mode Exit fullscreen mode

啟用 group_by_position_enabled 參數后:

SQL> ALTER SESSION SET group_by_position_enabled = TRUE;
Session altered.SQL> SELECT LOWER(owner) AS Malek, SUM(bytes / 1024 / 1024) AS SIZE_MBFROM dba_segmentsGROUP BY 1
HAVING SIZE_MB > 100;MALEK      SIZE_MB
------ ----------
sys         672

Enter fullscreen mode Exit fullscreen mode

結論:
Oracle Database 23ai 對 SQL 語法進行了重大改進,包括在 GROUP BY 和 HAVING 子句中使用列別名的功能,以及在 GROUP BY 中使用列位置的功能。這些增強功能簡化了查詢編寫并提高了可讀性。

如果這篇文章對你有幫助的話,別忘了【在看】【點贊】支持下哦~

原文地址:https://mp.weixin.qq.com/s/aZ0_Df47isqVRAyAG_dzrg

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904558.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904558.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Modbus 轉 IEC61850 網關

第一章 產品概述 Modbus 轉 IEC61850 網關型號 SG-IEC61850-Modbus ,是三格電子推出的工業級網關(以 下簡稱盒子或網關),主要用于 Modbus RTU/TCP 數據采集、 DLT645-1997/2007 數據采集, 可接多功能電力儀表…

MySQL 中的 MVCC 是什么?

MySQL 中的 MVCC(Multi-Version Concurrency Control,多版本并發控制) 是一種用于實現高并發讀寫操作的機制,它通過維護數據的多個版本來解決讀寫沖突,從而在保證事務隔離性的同時,減少鎖的使用&#xff0c…

【Python】讓Selenium 像Beautifulsoup一樣,用解析HTML 結構的方式提取元素!

我在使用selenium的find_element的方式去獲取網頁元素,一般通過xpath、css_selector、class_name的方式去獲取元素的絕對位置。 但是有時候如果網頁多了一些彈窗或者啥之類的,絕對位置會發生變化,使用xpath等方法,需要經常變動。…

使用xlwings將excel表中將無規律的文本型數字批量轉化成真正的數字

之前我寫了一篇文章excel表中將無規律的文本型數字批量轉化成真正的數字-CSDN博客 是使用excel自帶的操作,相對繁瑣。 今天使用xlwings操作,表格如下(有真正的數字,也有文本型數字,混在在一起)&#xff1…

ICML 2025錄取率公布,spotlight posters僅占2.6%

近日,ICML 2025公布了論文錄用結果。本次大會共收到 12,107篇有效論文投稿,比去年增加了28%,今年錄取論文3,260篇,錄取率為 26.9%。其中僅有313篇被列為“焦點海報”(即所有投稿中排名前2.6%的論文)&#x…

全局網絡:重構數字時代的連接范式

從局部到全局 —— 網絡架構的范式革命 在全球化與數字化深度融合的今天,傳統網絡架構的 “碎片化” 問題日益凸顯:跨地域數據流通低效、設備互聯孤島化、安全策略難以統一。 全局網絡作為一種突破地域與技術邊界的新型網絡架構,正成為企業…

SpringAI實現AI應用-內置顧問

SpringAI實戰鏈接 1.SpringAl實現AI應用-快速搭建-CSDN博客 2.SpringAI實現AI應用-搭建知識庫-CSDN博客 3.SpringAI實現AI應用-內置顧問-CSDN博客 4.SpringAI實現AI應用-使用redis持久化聊天記憶-CSDN博客 5.SpringAI實現AI應用-自定義顧問(Advisor&#xff09…

Nginx核心原理以及案例分析(AI)

一、Nginx核心原理分析 1. ?事件驅動與非阻塞模型? ?Epoll異步機制?:基于Linux的epoll模型實現異步非阻塞I/O處理,單線程可高效管理數萬并發連接,避免傳統select模型的輪詢性能瓶頸。?多進程架構?:采用Master-Worker模式&…

【Bug經驗分享】SourceTree用戶設置必須被修復/SSH 主機密鑰未緩存(踩坑)

文章目錄 配置錯誤問題原因配置錯誤問題解決主機密鑰緩存問題原因主機密鑰緩存問題解決 更多相關內容可查看 配置錯誤問題原因 電腦太卡,曾多次強制關機,在關機前沒有關閉SourceTree,導致配置錯誤等問題 配置錯誤問題解決 方式一&#xff…

阿里云服務器-centos部署定時同步數據庫數據-dbswitch

前言: 本文章介紹通過dbswitch工具實現2個mysql數據庫之間實現自動同步數據。 應用場景:公司要求實現正式環境數據庫數據自動冷備 dbswitch依賴環境:git ,maven,jdk 方式一: 不需要在服務器中安裝git和maven,直接用…

windows10 環境下通過huggingface_hub下載huggingface社區模型

項目場景: 有一些模型需要在huggingface下載,因為國內限制,一般無法訪問huggingface網站進行下載。然而,可以通過國內的鏡像下載。網上大部分都是在linux系統下,通過huggingface提供的指令下載。本文針對采用python腳…

C++之異常

目錄 前言 一、什么是異常 二、C中的異常 2.1 C語言中的異常處理 2.2 C中的異常處理 2.3 異常的拋出與捕獲 2.4 棧展開 2.5 查找匹配的處理代碼 2.6 異常重新拋出 2.7 異常安全問題 2.8 異常規范 2.9 標準庫的異常 前言 在之前我們已經學習了C中不少知識了,但是其中…

$在R語言中的作用

在 R 語言中,$ 是一個非常重要的操作符,主要用于訪問對象的成員或組件。它的用途非常廣泛,不僅限于數據框(data frame),還可以用于列表(list)、環境(environment&#xf…

設計一個分布式系統:要求全局消息順序,如何使用Kafka實現?

一、高吞吐低延遲 Kafka 集群設計要點 1. 分區策略優化 // 計算合理分區數公式(動態調整) int numPartitions max(Tp, Tc) / min(Tp, Tc) // Tp生產者吞吐量 Tc消費者吞吐量建議初始按業務鍵(如訂單ID)哈希分區單分區吞吐建議…

[dify]官方模板DeepResearch工作流學習筆記

一、功能 根據用戶輸入的主題進行多輪搜索并生成綜合報告 1、流程分析 1.1 初始階段 Start節點:接收用戶輸入的"depth"參數,決定搜索的深度/輪數 參數可以不填,不填的時候取默認值3 Create Array節點:根據depth參數…

hadoop中的序列化和反序列化(3)

3. Java的序列化 Java提供了內置的序列化機制,通過java.io.Serializable接口實現。 3.1 如何實現Java序列化 讓類實現Serializable接口。 使用ObjectOutputStream進行序列化。 使用ObjectInputStream進行反序列化。 示例代碼 序列化 java 復制 import jav…

6、CMake基礎:流程控制

流程控制 1. 條件判斷1.1 基本表達式1.2 邏輯判斷1.3 比較基于數值的比較基于字符串的比較 1.4 文件操作1.5 其他 2. 循環2.1 foreach方法1方法2方法3方法4 2.2 while 在 CMake 的 CMakeLists.txt 中也可以進行流程控制,也就是說可以像寫 shell 腳本那樣進行條件判斷…

【網絡編程】二、UDP網絡套接字編程詳解

文章目錄 前言Ⅰ. UDP服務端一、服務器創建流程二、創建套接字 -- socketsocket 屬于什么類型的接口???socket 是被誰調用的???socket 底層做了什么???和其函數返回值有沒有什么關系??? 三、綁定對應端口號、IP地址到套接字 -- bind四、數據的發送和接收 -- sendto…

準確--Notepad++ 實用的插件介紹

Notepad 提供了很多實用的插件,可以極大地提升編程和文本編輯的效率。以下是一些常用且有用的插件介紹: 1. NPP Export 功能:可以將打開的文件導出為 HTML 或 RTF 格式,方便生成漂亮的代碼文檔。用途:適合需要將代碼…

[20250507] AI邊緣計算開發板行業調研報告 ??(2024年最新版)?

[20250507] AI邊緣計算開發板行業調研報告 ??(2024年最新版)? 一、行業背景?? 隨著物聯網設備激增與AI模型輕量化,邊緣計算成為AI落地核心場景。AI邊緣計算開發板(Edge AI Board)作為硬件載體,需滿足??低延遲…