搜尋
首頁資料庫OracleOracle範例詳解分組數據

本篇文章為大家帶來了關於Oracle的相關知識,其中主要整理了分組資料的相關問題,分組允許把資料分割進邏輯群組中,以便可以對每個群組執行聚合計算,下面一起來看一下,希望對大家有幫助。

Oracle範例詳解分組數據

推薦教學:《Oracle影片教學

分組允許把資料分割進邏輯群組中,以便可以對每個組執行聚合計算。

1、建立分組

分組是在SELECT語句中使用GROUP BY子句建立的。

範例:

SELECT vend_id, count(*) as num_prodsfrom productsgroup by vend_id;

Oracle範例詳解分組數據

#由於使用了GROUP BY,將不必指定要評估和計算的每個分組,這是自動完成的。 GROUP BY子句指示Oracle將資料分組,並對每一個分組(而非對整個結果集)執行聚合。

在使用GROUP BY之前,下面列出了你需要知道的使用它的一些重要規則。

  • GROUP BY子句可以根據需要包含許多欄位。它允許嵌套分組,對資料的分組方式進行更細粒度的控制。
  • 如果在group by子句中具有嵌套的分組,就會在最後指定的分組上匯總資料。換句話說,在建立分組時,將會把指定的所有欄位放在一起評估(因此,將不會針對每個單獨的欄位取回資料)。
  • group by中列出的每一列都必須是一個檢索的列或有效的表達式(而不是一個1聚合函數)。 如果在select中使用一個表達式,那麼必須在group by中指定相同的表達式。不能使用別名。
  • 除了聚合計算語句之外,SELECT語句中的每一列都應該出現在GROUP BY子句中。
  • 如果分組列包含一個具有NULL值的資料列,將會傳回NULL,作為一個分組。如果有多行具有NULL值,則將把他們都分組在一起。
  • GROUP BY子句必須出現在WHERE子句的後面和ORDER BY子句前面。

2、過濾分組

where子句通常也用於行過濾。但是,where在這裡不適用,因為where可以過濾特定的行,而不是分組。事實上,where無法適用於分組。

Oracle為此提供了另一個子句:HAVING。 where子句與having子句唯一的差異是:where過濾行,而having則過濾分組。

**提示:**having支援所有的where運算子

where與having的規則,語法完全相同,只有關鍵子不同。

範例:

SELECT cust_id, COUNT(*) AS ordersFROM ordersGROUP BY cust_idHAVING COUNT(*) >= 2;

Oracle範例詳解分組數據

#注意:having與where之間的差異

換個角度來看待having與where的差異:where過濾發生在資料之前,而having過濾則發生在資料分組之後。這是一個重要的區別,被where子句刪除的行不會包括在分組中。這可能會改變計算值,基於having子句中使用的那些值,它反過來又可能影響那些分組將會被篩選。

where子句與having子句同時使用範例:

select vend_id, count(*), as num_prodsfrom productswhere prod_price>=10group by vend_idhaving count(*) > 2;

Oracle範例詳解分組數據

SELECT vend_id, COUNT(*) AS num_prodsFROM productsGROUP BY vend_idHAVING COUNT(*) >= 2;

Oracle範例詳解分組數據

3、分組和排序

group by和order by的差異很大,即使他們通常用於完成相同的事情。

下表描述了order by與group by的區別

order by group by
對產生的輸出進行排序 #對資料列進行分組,不過輸出可能不會採用採用分組順序
可能使用任意列(甚至包括沒有選擇的列) 只可能使用所選的列或表達式,並且一定會使用所有選擇的清單達式
#從來都不是必須的 如果結合使用列(或表達式)與聚合函數,則必需的

时常,你会发现使用GROUP BY分组的数据的确是以分组顺序输出的。但是并非总是如此,并且实际上SQL规范也并没有如此要求。而且你实际上可能希望它以不同于分组的方式进行排序。你以一种方式对数据进行分组(以获得特定于分组的聚合值),并不意味着你也希望输出以相同的方式进行排序。总是应该还提供一个显式的ORDER BY子句,即使它与GROUP BY子句完全相同。

提示:不要忘记ORDER BY

通常,无论何时使用GROUP BY子句,还应该指定一个ORDER BY子句,这是确保正确地对数据进行排序的唯一方式。永远不要依靠GROUP BY对数据排序。

为了演示同时使用GROUP BY和ORDER BY的情况,让我们看一个示例。下面的SELECT语句类似于之前使用的SELECT语句。它用于检索总价在50以上(含50)的所有订单的订单号和订单总价:

SELECT order_num, SUM(quantity*item_price) AS ordertotalFROM orderitemsGROUP BY order_numHAVING SUM(quantity*item_price) >= 50;

Oracle範例詳解分組數據

要按订单总价对输出进行排序,只需添加一个ORDER BY子句,如下:

SELECT order_num, SUM(quantity*item_price) AS ordertotalFROM orderitemsGROUP BY order_numHAVING SUM(quantity*item_price) >= 50ORDER BY ordertotal;

Oracle範例詳解分組數據

4、select子句排序

select子句和它们的顺序

子句 描述 是否必须
select 要返回的列或表达式 Y
from 要从中检索数据的表 Y(在Oracle中是必须的;在大多数其他的DBMS中则不是)
where 行级过滤(分组前过滤) N
group by 分组规范 仅当按分组计算聚合值时是必须的
having 分组级过滤(分组后过滤) N
order by 输出的排列顺序 N

推荐教程:《Oracle视频教程

以上是Oracle範例詳解分組數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
MySQL與Oracle:查看用戶體驗MySQL與Oracle:查看用戶體驗Apr 30, 2025 am 12:12 AM

MySQL和Oracle在用戶體驗上的差異主要體現在:1.MySQL簡潔易用,適合快速上手和靈活性高的場景;2.Oracle功能強大,適合需要企業級支持的場景。 MySQL的開源和免費特性吸引初創公司和個人開發者,而Oracle的複雜功能和工具則滿足大型企業的需求。

MySQL和Oracle:探索性能和可伸縮性MySQL和Oracle:探索性能和可伸縮性Apr 29, 2025 am 12:12 AM

MySQL和Oracle在性能和可擴展性上的區別在於:1.MySQL在小型到中型數據集上表現更好,適合快速擴展和高效讀寫;2.Oracle在處理大型數據集和復雜查詢時更具優勢,適合高可用性和復雜業務邏輯。 MySQL通過主從復制和分片技術實現擴展,而Oracle通過RAC實現高可用性和擴展性。

Oracle軟件執行什麼:關鍵功能和功能Oracle軟件執行什麼:關鍵功能和功能Apr 28, 2025 am 12:08 AM

Oracle軟件的關鍵功能包括多租戶架構、高級分析和數據挖掘、實時應用集群(RAC)以及自動化管理和監控。 1)多租戶架構允許在一個數據庫實例中管理多個獨立的數據庫,簡化管理並降低成本。 2)高級分析和數據挖掘工具如OracleAdvancedAnalytics和OracleDataMining幫助從數據中提取洞察。 3)實時應用集群(RAC)提供高可用性和可擴展性,提高系統容錯能力和性能。 4)自動化管理和監控工具如OracleEnterpriseManager(OEM)自動化日常維護任務並實時監控數

甲骨文的影響:數據管理及其他甲骨文的影響:數據管理及其他Apr 27, 2025 am 12:11 AM

Oracle在数据管理和企业应用领域具有深远影响,其数据库以可靠性、可扩展性和安全性著称,广泛应用于金融、医疗和政府等行业。Oracle的影响力还扩展到中间件和云计算领域,如WebLogicServer和OracleCloudInfrastructure(OCI),提供创新解决方案。尽管面临开源数据库和云计算市场竞争,Oracle通过不断创新保持领先地位。

甲骨文:探索公司的使命和價值甲骨文:探索公司的使命和價值Apr 26, 2025 am 12:06 AM

Oracle的使命是“幫助人們看到數據的價值”,其核心價值觀包括:1)客戶至上,2)誠信,3)創新,4)團隊合作。這些價值觀指導Oracle在市場中的戰略決策和業務創新。

Oracle的核心功能:提供數據庫解決方案Oracle的核心功能:提供數據庫解決方案Apr 25, 2025 am 12:06 AM

Oracle數據庫是一種關係型數據庫管理系統,支持SQL和對象關係模型,提供數據安全和高可用性。 1.Oracle數據庫的核心功能包括數據存儲、檢索、安全和備份恢復。 2.其工作原理涉及多層存儲結構、MVCC機制和優化器。 3.基本用法包括創建表、插入和查詢數據;高級用法涉及存儲過程和触發器。 4.性能優化策略包括使用索引、優化SQL語句和內存管理。

使用Oracle軟件:數據庫管理及其他使用Oracle軟件:數據庫管理及其他Apr 24, 2025 am 12:18 AM

Oracle軟件除了數據庫管理外,還用於JavaEE應用、數據網格和高性能計算。 1.OracleWebLogicServer用於部署和管理JavaEE應用。 2.OracleCoherence提供高性能的數據存儲和緩存服務。 3.OracleExadata用於高性能計算。這些工具使得Oracle在企業IT架構中扮演了更加多元化的角色。

甲骨文在商業世界中的作用甲骨文在商業世界中的作用Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!