在平時(shí)的工作中,由于主要接觸ERP方面的業(yè)務(wù)數(shù)據(jù)處理,Oracle的分析函數(shù)一直沒怎么使用,但隨著公司開始做數(shù)據(jù)分析,Oracle的分析函數(shù)出現(xiàn)的越來越頻繁。因此準(zhǔn)備把分析函數(shù)中重要的幾個(gè)常用函數(shù)用法分析下。
成都創(chuàng)新互聯(lián)公司是專業(yè)的吳川網(wǎng)站建設(shè)公司,吳川接單;提供成都做網(wǎng)站、成都網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行吳川網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
Lag(): 在查詢中取出同一字段前N行的數(shù)據(jù)作為獨(dú)立的列。
表達(dá)式理解為:按column2進(jìn)行分組且根據(jù)column3進(jìn)行排序,取column1前N行(往前數(shù)第N行)的列值,如果為空則用xxxx進(jìn)行默認(rèn)。
由此可以想到,采用該方式可以計(jì)算環(huán)比以及同比,同比與表間join,該函數(shù)將大大減少SQL的量。
Lead(): 在查詢中取出同一字段后N行的數(shù)據(jù)作為獨(dú)立的列。
表達(dá)式理解為:按column2進(jìn)行分組且根據(jù)column3進(jìn)行排序,取column1后N行(往后數(shù)第N行)的列值,如果為空則用xxxx進(jìn)行默認(rèn)。
lag和lead的函數(shù),主要應(yīng)用于查找前后行的列記錄,使用這兩個(gè)分析函數(shù),可以減少子查詢或表關(guān)聯(lián),并且能夠大大提升sql語句性能。
在ORACLE中,函數(shù)的調(diào)用方式有位置表示法調(diào)用函數(shù)、命名表示法調(diào)用函數(shù)、混合使用位置表示法和命名表示法調(diào)用函數(shù)、排除表示法、ql調(diào)用表示法 --混合表示法。
甲骨文股份有限公司(Oracle)是全球大型數(shù)據(jù)庫(kù)軟件公司,總部位于美國(guó)加州紅木城的紅木岸。在2008年,甲骨文股份有限公司是繼Microsoft及IBM后,全球收入第三多的軟件公司。Oracle數(shù)據(jù)庫(kù)產(chǎn)品為財(cái)富排行榜上的前1000家公司所采用,許多大型網(wǎng)站也選用了Oracle系統(tǒng)。甲骨文股份有限公司于1989年正式進(jìn)入中國(guó),在北京、上海、廣州和成都均設(shè)立了分支機(jī)構(gòu)。
接收字符返回字符或數(shù)值時(shí)可以使用dual偽表
1、把小寫字符轉(zhuǎn)換成大寫
select supper(“smi”) form dual
2、把大寫轉(zhuǎn)換成小寫
lower(“SMI”)
3、首字母大寫
initcap(“smi”)
4、字符串的連接可以使用concat,也可以使用? ? 建議使用
concat(“hello”“world”) 結(jié)果為helloworld
5、字符串的截取,使用substr,第一個(gè)參數(shù)為字符串,第二個(gè)參數(shù)是索引,第三個(gè)參數(shù)結(jié)束索引(開始索引使用0和1效果一樣)
substr(hello,0,3) 結(jié)果為hel
6、獲取字符串長(zhǎng)度
length(“hello”)
7、字符串替換,第二個(gè)參數(shù)為被替換的字符串,第三個(gè)是替換的字符串
replace(“hello”,“l(fā)”,“x”) 結(jié)果為hexxo
1、四舍五入函數(shù)ROUND()
默認(rèn)取整,可以指定保留位數(shù)
round(12.523)? 結(jié)果為13
round(12.537,2) 結(jié)果為12.54
2、取整TRUNC
默認(rèn)全部去掉小數(shù),可以指定位數(shù)
trunc(12.789) 結(jié)果為12
3、取余數(shù)MOD
mod(10,3) 結(jié)果為1
oracle中提供了很多和日期相關(guān)的函數(shù),包括日期的加減
日期 - 數(shù)字 =日期
日期 - 日期 = 數(shù)字(天)
1、如:查詢員工進(jìn)入公司的走數(shù)
(sysdate - 入職日期)/7
注:當(dāng)前日期查詢select sysdate form dual
2、查詢所有員工進(jìn)入公司的月數(shù)
獲取兩個(gè)時(shí)間段的月數(shù)使用months_between(sysdate,入職日期)
3、獲取幾個(gè)月后的日期:add_months()
如:獲取員工三個(gè)月后的日期
add_months(sysdate,3)
4、如求出下星期一是什么時(shí)候
指定給出下次某日期數(shù)next_date()
next_date(sysdate,“星期一”)
5、求日期的最后一天last_day()
求出本月的最后一天
last_day(sysdate)
1、to_char字符串轉(zhuǎn)換函數(shù)
如:將所有員工的入職日期的年、月分開
注:在劃分時(shí)需要通配符
年:yyyy? 月:mm? 日:dd
時(shí):HH 分:mi? 秒:ss
定義時(shí)間格式
to_char(sysdate,“yyyy-mm-dd HH24:mi:ss”)
在10以下的月數(shù)前面會(huì)默認(rèn)加上前導(dǎo)零,去除加上fm
to_char(sysdate,“fmyyyy-mm-dd HH24:mi:ss”)
to_char還可以給數(shù)字做格式化
如將員工的工資按三位“,”分隔
to_char(工資,“99,999”) 9代表數(shù)字
如果想在錢上加上國(guó)家符號(hào)
美元使用
中文使用l
to_char(工資,“99,999”)
to_char(工資,“l(fā)99,999”)
2、to_number數(shù)值轉(zhuǎn)換函數(shù),將字符串轉(zhuǎn)換成數(shù)值
to_number(“10”) +to_number(“10”)
3、to_date日期轉(zhuǎn)換函數(shù),將字符串?dāng)?shù)據(jù)轉(zhuǎn)換成日期類型
to_date(“1997-05-12”,“YYYY-mm-dd”)? 1997/05/12
1、空值處理 nvl
如果在查詢的時(shí)候存在空值的情況可以使用
nvl(comm,0) 當(dāng)comm的列值為空時(shí),用0代替
2、decode函數(shù)
該函數(shù)類似于if ...else if ...else
語法:decode(列名/值,search1,result1,search2,result2,default)
decode(中國(guó),中國(guó),我是中國(guó),美國(guó),我是美國(guó),其他)
如果為中國(guó)返回我是中國(guó),為美國(guó)返回我是美國(guó),為其他字符則返回其他。
3、case when 與decode差不多
語法 case when city=中國(guó) then 我是中國(guó)
? ? ? ? ? when city=美國(guó) then 我是美國(guó)
? ? ? ? ? ? else 其他
使用如下:sum是求和函數(shù),例如:select sum(列名) from 表名,用于計(jì)算列的總和。
sum是求指定字段下所有數(shù)據(jù)的相加總和,select sum(o.amount) from pos_order o 意思就是求出amount這個(gè)字段下的數(shù)據(jù)總和。
1、sum為聚合函數(shù):是?SQL語言中一種特殊的函數(shù):聚合函數(shù),SUM, COUNT, MAX, MIN, AV等。這些函數(shù)和其它函數(shù)的根本區(qū)別就是它們一般作用在多條記錄上。
2、其他舉例:SELECT SUM(population) FROM COUNTRY ,這里的SUM作用在所有返回記錄的population字段上,結(jié)果就是該查詢只返回一個(gè)結(jié)果,即所有國(guó)家的總?cè)丝跀?shù)。
擴(kuò)展資料
一、應(yīng)用
Transact-SQL編程語言提供下列聚合函數(shù):
1、AVG 返回指定組中的平均值,空值被忽略。
例:select prd_no,avg(qty) from sales group by prd_no
2、 COUNT 返回指定組中項(xiàng)目的數(shù)量。
例:select count(prd_no) from sales
3、 MAX 返回指定數(shù)據(jù)的最大值。
例:select prd_no,max(qty) from sales group by prd_no
4、 MIN 返回指定數(shù)據(jù)的最小值。
例:select prd_no,min(qty) from sales group by prd_no
5、 SUM 返回指定數(shù)據(jù)的和,只能用于數(shù)字列,空值被忽略。
例:select prd_no,sum(qty) from sales group by prd_no
6、 COUNT_BIG 返回指定組中的項(xiàng)目數(shù)量,與COUNT函數(shù)不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
例:select count_big(prd_no) from sales
二、Oracle
Oracle數(shù)據(jù)庫(kù)系統(tǒng)是美國(guó)Oracle公司(甲骨文公司)提供的以分布式數(shù)據(jù)庫(kù)為核心的一組軟件產(chǎn)品,是目前最流行的C/S或B/S體系結(jié)構(gòu)的數(shù)據(jù)庫(kù)之一,在數(shù)據(jù)庫(kù)領(lǐng)域一直處于領(lǐng)先地位。
Oracle數(shù)據(jù)庫(kù)是目前世界上使用最為廣泛的數(shù)據(jù)庫(kù)管理系統(tǒng),系統(tǒng)可移植性好、使用方便、功能強(qiáng),適用于各類數(shù)據(jù)操作環(huán)境。
作為一個(gè)通用的數(shù)據(jù)庫(kù)系統(tǒng),Oracle具有完整的數(shù)據(jù)管理功能;作為一個(gè)關(guān)系數(shù)據(jù)庫(kù),Oracle是一個(gè)完備關(guān)系的產(chǎn)品;作為分布式數(shù)據(jù)庫(kù),Oracle實(shí)現(xiàn)了分布式處理功能。因此,Oracle數(shù)據(jù)庫(kù)是一種高效率、可靠性好的適應(yīng)高吞吐量的數(shù)據(jù)庫(kù)解決方案。
參考資料來源:百度百科:聚合函數(shù)
百度百科:SQL數(shù)據(jù)庫(kù)
使用如下:sum是求和函數(shù),例如:select sum(列名) from 表名,用于計(jì)算列的總和。
1、sum為聚合函數(shù):是?sql語言中一種特殊的函數(shù):聚合函數(shù),SUM, COUNT, MAX, MIN, AVG等。這些函數(shù)和其它函數(shù)的根本區(qū)別就是它們一般作用在多條記錄上。
2、其他舉例:SELECT SUM(population) FROM COUNTRY ,這里的SUM作用在所有返回記錄的population字段上,結(jié)果就是該查詢只返回一個(gè)結(jié)果,即所有國(guó)家的總?cè)丝跀?shù)。
甲骨文公司,全稱甲骨文股份有限公司(甲骨文軟件系統(tǒng)有限公司),是全球最大的企業(yè)級(jí)軟件公司,總部位于美國(guó)加利福尼亞州的紅木灘。
1989年正式進(jìn)入中國(guó)市場(chǎng)。2013年,甲骨文已超越 IBM ,成為繼 Microsoft 后全球第二大軟件公司。