Oracle中SQL語句學習五(統計分組語句group by和having)

?

?

oracle(41)

在 應用系統開發中,進行需要統計數據庫中的數據,當執行數據統計時,需要將表中的數據進行分組顯示,在統計分組中是通過group by子句、分組函數、having子句共同實現的。其中group by子句用于指定要分組的列,而分組函數用戶指定顯示統計的結果,而having子句用戶限制顯示分組結果。?
???一、分組函數?
?? 分組函數用于統計表的數據,并作用于多行,但是返回一個結果,一般情況下,分組函數要與group by子句結合使用,Oracle數據庫提供了大量的分組函數,常用的五個分組函數:?

Oracle代碼??收藏代碼
  1. Max:該函數用于取得列或表達式的最大值,適用于任何數據類型。??
  2. Min:該函數用于取得列或表達式的最小值,適用于任何數據類型。??
  3. Avg:該函數用于取得列或表達式的平均值,適用于數字類型。??
  4. Sum:該函數用于取得列或表達式的總和,??適用于數字類型。??
  5. Count:該函數用于取的行數總和。??



注意:?
1、當使用分組函數時,分組函數只能出現在選擇列表、order by和having子句中,而不能出現在where、group by子句中。?
2、當使用分組函數時,除了函數count(*)外,其他分組函數都會忽略NULL行。?
3、當執行select語句時,如果選擇列表同時包括列、表達式和分組函數,那么這些列、表達式必須出現在group by子句中。?
4、當使用分組函數時,在分組函數中可以指定all和distinct選項,其中all是默認選項,該選項表示統計所有行數據(包括重復行),distinc可以統計不同行數據。?

示例如下:?
1、取得某列最小值、最大值、平均值、總和和總計行數?

Oracle代碼??收藏代碼
  1. select?max(id)?as?max_id,min(id)?as?min_id,avg(id)?as?avg_id,sum(id)?as?sum_id,count(*)?as?count?from?cip_temps;??


2、去除重復值?

Oracle代碼??收藏代碼
  1. select?count(distinct?id)?from?cip_temps;??


二、group by和having子句?
?? group by子句是對統計的結果進行分組統計,而having子句用于限制分組顯示結果,語法如下:?
select column,group_function from table [where condition][group by group_by_experssion][having group_function];如上所示,column用于指定列表中的列或表達式,group_function用于指定分組函數,condition用于指定條件子句,group_by_experssion用于指定分組表達式,group_function用于指定排除分組結果條件。?
1、使用group by進行單列分組,如下:?

Oracle代碼??收藏代碼
  1. select?id?as?id,min(age)?max_age,max(age)?max_age?from?cip_temps?group?by?id;??


2、使用having子句限制分組顯示結果,如下:?

Oracle代碼??收藏代碼
  1. select?id?as?id,count(age)?count?from?cip_temps?group?by?id?having?count(age)=2;??


三、case表達式?
case格式如下:?

Oracle代碼??收藏代碼
  1. case?when?條件?then?返回值1?when?條件2?then?返回值2?else?返回值3?end??


示例如下:?
select name,age,address,case when id=21 then 'abc' when id=22 then 'def' else 'hij' end alias from cip_temps;?
四、Oracle常用統計函數?
1、數字函數?
? (1)、mod(m,n)該函數用于返回取得兩個數字相除后的余數,如果數字為0,則返回結果為m。?
? (2)、round(n,[m]該函數用于取得四舍五入運算,如果省略m,則四舍五入至整數位;如果m是負數,則四舍五入到小數點前m位;如果m是正數,則四舍五入到小數點后m位。?
? (3)、trunc(n,[m])該函數用于截取數字,如果省略m,則將數字n的小數部門截取;如果m為正數,則將數字n截取至小數點后的第m位,如果m為負數,則將數字n截取小數點的前m為。?
示例如下:?

Oracle代碼??收藏代碼
  1. select?mod(10,4)?from?dual;??
  2. select?round(101234.567,-4)?from?dual;??
  3. select?round(101.234567,4)?from?dual;??
  4. select?trunc(101234.457,2)?from?dual;??
  5. select?trunc(101234.457,-2)?from?dual;??


2、日期函數?
?? (1)、round(d,[fmt])該函數用于返回日期時間的四舍五入結果,如果fmt指定年度,則7月1日為分割線;如果fmt指定月,則16日為分割線;如果fmt指定為天,則中午12:00為分割線。?
?? (2)、trunc(d,[fmt])該函數用于截取日期時間數據,如果fmt指定年度,則結果為本年度的1月1日,如果fmt指定月,則結果為本月1日。?
示例如下:?

Oracle代碼??收藏代碼
  1. select?round(sysdate,'yyyy')?from?dual;??
  2. select?round(sysdate,'mm')?from?dual;??
  3. select?round(sysdate,'dd')?from?dual;??
  4. select?trunc(sysdate,'yyyy')?from?dual;??
  5. select?trunc(sysdate,'mm')?from?dual;??
  6. select?trunc(sysdate,'dd')?from?dual;??


? 3、轉換函數?
??? (1)、to_char(date,fmt)該函數用于將日期類型轉換為字符串類型,其中fmt用于指定日期格式。?
??? (2)、to_date(char,fmt)該函數用于將符合特定日期格式的字符串轉變為date類型的值。?
??? (3)、to_number(char)該函數用于將符合特定數字格式的字符串轉換為數字類型。?
示例如下:?

Oracle代碼??收藏代碼
  1. select?to_date('2009-3-1','yyyy-mm-dd')?from?dual;??
  2. select?to_char(sysdate,'YYYY-MM-DD?HH24:MI:SS')?from?dual;??
  3. select?to_number('10.123')?from?dual;??


4、其他單行函數?
??? (1)、decode(expr,search1,result1[,search2,result2,...],default)該函數用于返回匹配于 特定表達式結果,如果search1匹配與expr,則返回結果result1,如果search2匹配expr,則返回結果result2,以此類推, 如果沒有任何匹配關系,則返回默認default。?
示例如下:?

Oracle代碼??收藏代碼
  1. select?name,decode(age,'bb21',id*10,'bb22',id*20,1000)?as?decodee?from?cip_temps;??


注意:decode函數和case表達式的用法基本相似,但是case表達式可以多個條件進行判斷,從而返回結果。?
示例如下:?

Oracle代碼??收藏代碼
    1. select?name,case?when?(??
    2. ?????????????(age='bb21'?and?address='cc21')???
    3. ?????????????or?(age='bb22'?and?address='cc22')???
    4. ?????????????or?(age='bb23'?and?address='cc23')???
    5. ???????????)?then?1?else?0?end?as?cases?from?cip_temps

轉載于:https://www.cnblogs.com/lcword/p/5707483.html

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

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

相關文章

linux系統去吧,要開始另一個linux操作系統的嘗試了,說說我以前的ubuntu吧

我想,除了嘗試一下ubuntu的神奇魅力的同時,我應該去體驗一下RedHat的神奇吧!馬上就要告別ubuntu了,我想把我的部分使用經歷和大家分享分享!首先,無論是ubuntu8.04、10.04還是10.1的效果都是很好的&#xff…

課程編碼查詢_付出還是不付出:生活中最好的事情(例如編碼課程)是否免費?...

課程編碼查詢by Rick West由里克韋斯特(Rick West) 付出還是不付出:生活中最好的事情(例如編碼課程)是否免費? (To pay or not to pay: are the best things in life — like coding courses — free?) Recently, I’ve been working on a project tha…

做開發十年,我總結出了這些開發經驗

本文由云社區發表,原文轉載地址:https://www.cnblogs.com/qcloud1001/p/10218876.html 在一線做了十年的開發,經歷了網易、百度、騰訊研究院、MIG 等幾個地方,陸續做過 3D 游戲、2D 頁游、瀏覽器、移動端翻譯 app 等。 積累了一些感悟。必然有依然幼稚的…

2016年4月 TIOBE 編程語言排行榜

4月頭條: Visual Basic 正在漸行漸遠 COBOL, BASIC 和 FORTRAN 很長一段時間作為主力開發語言被使用。有很多軟件使用這些語言來編寫,并且發展的不亦樂乎。然而經過多年的發展,COBOL和FORTRAN逐漸被拋棄,而得益于微軟的存在,BASIC…

linux系統不知道電腦密碼怎么辦,Linux如何修復系統的Root密碼 -電腦資料

如果因為忘了root口令導致無法登錄系統,請試用下面的方法來改忘記的root口令:方法一:1、重新啟動系統,2、把光標定位在該選項上按下字母“e”鍵進入這個引導的編輯狀態;3、該選項有三行語句,請用光標選中第…

控制語句(4)

第4章 控制語句if<條件1>&#xff1a; <語句1>elif<條件2>: <語句2>elif<條件3>&#xff1a; <語句3>......else: <語句n>說明&#xff1a;elif語句&#xff0c;只要有一個條件成立&#xff0c;就會將其后的一個部分語句執行…

02 socketserver客戶端

import socket client socket.socket() client.connect((127.0.0.1,8001))while 1:msg input(客戶端說>>>)client.send(msg.encode(utf-8))from_server_msg client.recv(1024)print(from_server_msg.decode(utf-8)) 轉載于:https://www.cnblogs.com/work14/p/10235…

基于zbus的MySQL透明代理(100行)

項目地址 https://git.oschina.net/rushmore/zbus 我們上次講到zbus網絡通訊的核心API&#xff1a; Dispatcher -- 負責-NIO網絡事件Selector引擎的管理&#xff0c;對Selector引擎負載均衡 IoAdaptor -- 網絡事件的處理&#xff0c;服務器與客戶端共用&#xff0c;負責讀寫&am…

linux添加jetdirect協議,Padavan 路由器固件 不能驅動 hp1005、hp1020之類打印機 foo2zjs ZjStream協議的linux打印機驅動程序...

單擊鏈接&#xff0c;或剪切并粘貼下面的整個命令行以下載驅動程序。現在解壓縮它&#xff1a;Unpack:$ tar zxf foo2zjs.tar.gz$ cd foo2zjs現在編譯并安裝它。 INSTALL文件包含更詳細的說明; 請現在閱讀。Compile:$ makeGet extra files from the web, such as .ICM profiles…

返回指定月份的周列表 包含 周序號、開始日期、結束日期(不包含周末)

/*** 返回當前年月的周列表 包含 周序號、開始日期、結束日期(不包含周末)* param year 年* param month 月* returns {Array} */function getYearMonthWeekList(year,month) {var weekList[];var time year "/" month "/01";//取當前月的第…

tez-site.xml_數字支付系統的未來-Google Tez和音頻快速響應

tez-site.xmlby Vaidic Joshi通過Vaidic Joshi 數字支付系統的未來-Google Tez和音頻快速響應 (The future of digital payment systems — Google Tez and Audio Quick Response) Google recently marked its entry into the Indian digital payments market by introducing …

Window上安裝kafka

kafka在windows上的安裝、運行 - 進階者ryan-su - CSDN博客https://blog.csdn.net/u010283894/article/details/77106159 在Windows環境中安裝并使用kafka - 心靈空谷幽蘭 - 博客園https://www.cnblogs.com/xinlingyoulan/p/6054361.html?utm_sourceitdadao&utm_mediumref…

數集合有多少個TOJ(2469)

題目鏈接&#xff1a;http://acm.tju.edu.cn/toj/showp2469.html 感覺這個題目有點問題&#xff0c;算了不管他了&#xff0c;反正A了。 這里要注意的是求這個集合有多少種&#xff0c;那么就是要剔除重復數后&#xff0c;再數一下有多少個。 難一點的算法我也不會&#xff0c;…

linux path環境變量起什么作用,shell基礎(5)PATH環境變量的作用和使用方法

釋放雙眼&#xff0c;帶上耳機&#xff0c;聽聽看~&#xff01;關于PATH的作用PATH說簡單點就是一個字符串變量&#xff0c;當輸入命令的時候LINUX會去查找PATH里面記錄的路徑。比如在根目錄/下可以輸入命令ls,在/usr目錄下也可以輸入ls,但其實ls這個命令根本不在這個兩個目錄下…

天氣城市編碼對應地區編碼_如何在您的城市中建立強大的編碼社區-我是如何做到的...

天氣城市編碼對應地區編碼by Billy Le比利勒(Billy Le) 如何在您的城市中建立強大的編碼社區-我是如何做到的 (How you can build a strong coding community in your city — and how I did it) Communities are important. They are the bedrock that glues together shared…

python3 自動打包部署war包

2019獨角獸企業重金招聘Python工程師標準>>> 1 調用maven 命令打包 mvn -B -f D:/workspace/ksdcourse clean package 2 調用tomcat 部署war包 &#xff1b; 需要添加 CATALINA_HOME的環境變量 代碼如下&#xff1a; #!/usr/bin/python3# -*- coding: utf-8 -*-impo…

python 虛擬環境創建

創建虛擬環境&#xff1a;  sudo apt-get install virtualenv 新建虛擬環境文件夾 venv virtualenv venv 進入虛擬環境 source venv/bin/activate 安裝套件列表模塊: 用來記錄項目中所使用到的各種模塊&#xff0c;便于項目部署時統一安裝所需模塊 pip freeze > requir…

powershell開源新聞及簡介

作者&#xff1a;PowerShll傳教士 問&#xff1a;微軟的PowerShell腳本語言已經開源了 &#xff1f; 答&#xff1a;絕對真的&#xff01;已經&#xff01; 問&#xff1a;源碼在哪&#xff1f; 答&#xff1a;微軟.net源碼網站。 http://referencesource.microsoft.com/ 問&…

linux nginx重新編譯安裝,Linux系統Nginx編譯安裝教程

1、下載nginx1.2.4#注&#xff1a;下載地址&#xff1a;http://nginx.org/download/nginx-1.2.4.tar.gzwget -c http://nginx.org/download/nginx-1.2.4.tar.gz2、安裝#注&#xff1a;默認安裝到/usr/local/nginxtar -zxvf nginx-1.2.4.tar.gzcd nginx-1.2.4./configure如果出現…

htt://3g.hn_根據我對“詢問HN:誰在招聘?”的分析,開發人員技能發展趨勢

htt://3g.hnby Ryan Williams瑞安威廉姆斯(Ryan Williams) 根據我對“詢問HN&#xff1a;誰在招聘&#xff1f;”的分析&#xff0c;開發人員技能發展趨勢 (Trending Developer Skills, Based on my Analysis of “Ask HN: Who’s Hiring?”) For people learning to code an…