組函數及分組統計


分組函數


SQL中經常使用的分組函數

??? Count(): 計數

??? Max():求最大值

??? Min():求最小值

??? Avg():求平均值

??? Sum():求和


-- 統計emp表中的人數
select count(*) from emp; -- 統計獲得獎金的人數
select count(comm) from emp;-- 求全部雇員的最低工資
select min(sal) from emp;-- 求全部雇員的最高工資
select max(sal) from emp;-- 求部門編號為20的雇員的平均工資和總工資
select avg(sal),sum(sal) from emp where deptno = 20;

分組統計查詢


語法格式

SELECT {DISTINCT}*|查詢列1 別名1,查詢列2 別名2……

FORM 表名稱1 別名1,表名稱2 別名2,……

{WHERE 條件表達式}

{GROUP BY 分組條件}

{ORDERBY? 排序字段 ASC|DESC,排序字段 ASC|DESC,……}


-- 統計出每一個部門的人數
select deptno,count(empno) from emp group by deptno;-- 求出每一個部門的平均工資
select deptno, avg(sal) from emp group by deptno;

統計每一個部門的最高工資,以及獲得最高工資的雇員姓名

假設寫成

SELECT ename,max(sal)FROM empGROUP BY deptno

Oracle會提示第 1 行出現錯誤:

ORA-00979: 不是 GROUP BY 表達式

以上代碼在運行過程中出現錯誤,是由于:

1. 假設程序中使用了分組函數。則在下面兩種情況下能夠正常查詢結果:

????? 程序中存在了GROUP BY,并指定了分組條件。這樣能夠將分組條件一起查詢出來

????? 假設不使用GROUP BY,則僅僅能單獨地使用分組函數

2.使用分組函數時,查詢結果列不能出現分組函數和分組條件之外的字段


綜上所述,我們在進行分組統計查詢時有遵循這樣一條規律:

出如今字段列表中的字段。假設沒有出如今組函數中。就必然出如今GROUP BY 語句的后面


-- 統計出每一個部門的最高工資。及最高工資的雇員姓名
select deptno, ename,sal from emp where sal in(select max(sal) from emp group by deptno);


-- 查詢出每一個部門的部門名稱。及每一個部門的雇員人數
select d.dname, count(e.empno)
from emp e, dept d
where e.deptno = d.deptno
group by d.dname

求出平均工資大于2000的部門編號和平均工資

剛開始學習的人非常easy錯誤地寫成將工資大于2000的條件寫在where的后面

SELECT deptno,avg(sal)  FROM emp  WHERE avg(sal)>2000   GROUP BYdeptno<span style="font-family:SimSun;"></span>

系統出現例如以下錯誤提示:

ORA-00934: 此處不同意使用分組函數


-- 求出平均工資大于2000的部門編號和平均工資
select e.deptno, avg(sal)
from emp e, dept d
where e.deptno = d.deptno
having avg(sal) > 2000
group by e.deptno;


規則:WHERE 僅僅能對單條記錄限制(過濾),having是對分組進行過濾

分組函數僅僅能在分組中使用。不能在WHERE語句之中出現。假設要指定分組條件,則僅僅能通過另外一種條件的指令:HAVING

-- 顯示非銷售人員工作名稱以及從事同一工作雇員的月工資總和,而且要滿足從事同一工作的雇員的月工資合計大于$5000,輸出結果按月工資合計升序排列
select e.job, sum(e.sal) sum_sal
from emp e
where e.job <> 'SALESMAN'
group by e.job
having sum(e.sal) > 5000
order by sum_sal;

分組的簡單原則:
???? 僅僅要一列上存在反復內容才有可能考慮到用分組查詢

注意:

???? 分組函數能夠嵌套使用,可是在組函數嵌套使用的時候不能再出現分組條件的列名


例:求平均工資最高的部門編號、部門名稱、部門平均工資

第一步:

select deptno, avg(sal) from emp group by deptno;


第二步:

select deptno, max(avg(sal)) from emp group by deptno;
ORA-00937: 不是單組分組函數


第三步:去掉查找結果中的deptno列

select max(avg(sal)) from emp group by deptno;



逐步完畢后:

select d.deptno, d.dname, t.avg_salfrom dept d,(select deptno,avg(sal) avg_salfrom empgroup by deptno having avg(sal)=(select max(avg(sal)) from emp group by deptno) ) t
where t.deptno=d.deptno;


?







轉載于:https://www.cnblogs.com/yxwkf/p/5278895.html

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

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

相關文章

java數據生成excel_Java 數據庫數據生成Excel

采用jxl.jar生成Excel項目開發注意事項&#xff1a; 1:導入從網上下載的jar包&#xff1a;mail.jar 和 activation.jar2:刪掉C:\Program Files\MyEclipse\Common\plugins\com.genuitec.eclipse.j2eedt.core_10.0.0.me201110301321\data\libraryset\EE_5 下 javaee.jar中的java…

兩張神圖介紹python3和 2.x與 3.x 的區別

有感與第一張圖, 做了第二張圖.轉載于:https://www.cnblogs.com/Vito2008/p/5280393.html

Java-jdbc連接數據庫

1、Oracle8/8i/9i數據庫&#xff08;thin模式&#xff09; Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url"jdbc:oracle:thin:localhost:1521:orcl"; //orcl為數據庫的SID String user"test"; String…

abstract class 和 interface 區別

本文出自與&#xff1a;heipai:tsg666含有 abstract 修飾符的 class 即為抽象類&#xff0c;abstract 類不能創建的實例對象。含有 abstract 方法的類必須定義為 abstract class&#xff0c;abstract class 類中的方法不必是抽象的。abstract class 類中定義抽象方法必須在具體…

Factorial Trailing Zeroes

https://leetcode.com/problems/factorial-trailing-zeroes/ Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in logarithmic time complexity. 解題思路&#xff1a; 再次遇見最討厭的Math題。 開始的思路&#xff0c;結尾的…

java設計模式懶漢_java設計模式-懶漢設計模式

一、理論類加載時&#xff0c;不進行實例化&#xff0c;調用時才進行類的實例化。二、代碼實現public class LazyManPattern {//1.構造方法私有化private LazyManPattern(){}//2.類加載時&#xff0c;不進行實例化private static LazyManPattern lazyManPattern;//3.創建實例化…

多視圖參數傳遞

在iOS開發中常用的參數傳遞有以下幾種方法&#xff1a; 采用代理模式 采用iOS消息機制 通過NSDefault存儲&#xff08;或者文件、數據庫存儲等&#xff09; 通過AppDelegate定義全局變量&#xff08;或者使用UIApplication、定義一個單例類等&#xff09; 通過控制器屬性傳遞轉…

百年難得一見!阿里園區驚現雙月爭輝奇觀!

9月3日晚杭州阿里園區上空突然驚現“雙月爭輝”奇觀&#xff0c;引發路人、員工爭相拍照留念狂潮。記者隨后深入園區探訪&#xff0c;近距離觀察“雙月奇觀”。當晚&#xff0c;熱心觀眾王先生提供線索。王先生路過杭州阿里巴巴園區時&#xff0c;聽到有人呼喊&#xff1a;“快…

Math源碼java_深入學習java源碼之Math.sin()與 Math.sqrt()

深入學習java源碼之Math.sin()與 Math.sqrt()native關鍵字凡是一種語言&#xff0c;都希望是純。比如解決某一個方案都喜歡就單單這個語言來寫即可。Java平臺有個用戶和本地C代碼進行互操作的API&#xff0c;稱為JNInative關鍵字告訴編譯器(其實是JVM)調用的是該方法在外部定義…

路由控制器Express的路由控制方法

MVC中的C控制器 express的路由控制方法&#xff1a;1.創建路由規則 var express require(‘express’); var router express.Router(); /* get home page.*/ router.get(/, function(req,res){ res.render(index, title:express); }); module.exports router; 服務器在開始…

URAL 1146 Maximum Sum(最大子矩陣的和 DP)

Maximum Sum 大意&#xff1a;給你一個n*n的矩陣&#xff0c;求最大的子矩陣的和是多少。 思路&#xff1a;最開始我想的是預處理矩陣&#xff0c;遍歷子矩陣的端點&#xff0c;發現復雜度是O(n^4)。就不知道該怎么辦了。問了一下&#xff0c;是壓縮矩陣&#xff0c;轉換成最大…

基于 axios 的 Vue 項目 http 請求優化

對于需要大量使用 http 請求的項目&#xff0c;我們通常會選擇對 http 請求的方法進行二次封裝&#xff0c;以便增加統一的攔截器&#xff0c;或者統一處理阻止重復提交之類的邏輯。Vue.js 的項目中我們選擇使用了 axios 這樣一個 http 庫&#xff0c;下面也就簡述下基于 axios…

Spring 事務配置5種方式

Spring配置文件中關于事務配置總是由三個組成部分&#xff0c;分別是DataSource、TransactionManager和代理機制這三部分&#xff0c;無論哪種配置方式&#xff0c;一般變化的只是代理機制這部分。 DataSource、TransactionManager這兩部分只是會根據數據訪問方式有所變化&…

java中主線程首先執行_java經典面試題:子線程先運行30次主線程,主線程40次,如此循環50次?...

最近偶遇這道題&#xff0c;網上相似的題都是循環次數不一樣。然而我百度搜到的論壇或者博客感覺都不太對&#xff0c;運行有穿插。請給出正確結果。我們假使所有人都引入了業務對象。并且我有疑問&#xff1f;感覺題目本意不是new Thread()放在前面。網上有人做法是用標志位防…

[翻譯]Feedback on the Go Challenge solutions

第一次Go Challenge比賽&#xff0c;中國區只有3人參賽。 賽后收到郵件&#xff0c;是一個審閱者的反饋&#xff0c;“Feedback on the Go Challenge solutions”&#xff0c;摘錄如下&#xff1a; 保持簡單粗暴 一個語義單元一個文件即可&#xff0c;不要像Java那樣一個文件就…

黑客宣稱掌握了600多萬個Instagram賬號的信息

據外媒報道&#xff0c;上周早些時候&#xff0c;歌手兼演員賽琳娜戈麥斯因Instagram賬號被盜而發出大量來自前男友賈斯汀比伯的裸照。不過當時很快賽琳娜就拿回了對賬號的控制權并刪掉了這些裸照。就在大家以為這件事情已經平息的時候&#xff0c;Instagram卻被曝光了一個極為…

java apache.poi_Java Apache POI

我正在努力從excel文檔中讀取數據,該文檔每兩周更新一次,大約有50,000行數據,在開始新工作表之前可能會達到大約120,000.我正在使用Apache POI來獲取數據.我在下面得到了這個例外,但我認為最重要的一個例外是引起&#xff1a;java.lang.OutOfMemoryError&#xff1a;Java堆空間…

Hibernate逍遙游記-第2章-使用hibernate.properties

1. 1 package mypack;2 3 import org.hibernate.*;4 import org.hibernate.cfg.Configuration;5 import java.util.*;6 7 public class BusinessService{8 public static SessionFactory sessionFactory;9 10 /** 初始化Hibernate&#xff0c;創建SessionFactory實例 */1…

奇怪吸引子---Aizawa

奇怪吸引子是混沌學的重要組成理論&#xff0c;用于演化過程的終極狀態&#xff0c;具有如下特征&#xff1a;終極性、穩定性、吸引性。吸引子是一個數學概念&#xff0c;描寫運動的收斂類型。它是指這樣的一個集合&#xff0c;當時間趨于無窮大時&#xff0c;在任何一個有界集…

C#打印圖片

打印的原理是&#xff1a;生成mdi文件&#xff0c;系統碰到mdi的時候會自動以打印的方式處理。所以&#xff0c;不管用什么模板&#xff0c;什么方式&#xff1b;能在PrintPage事件處理中,生成一張要打印內容的圖片就OK了! C#實現打印源碼如下&#xff1a; #region 打印 …