當前位置:首頁 » 數據倉庫 » 資料庫分析函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫分析函數

發布時間: 2022-08-20 21:31:50

1. excel中資料庫函數的具體用法並舉例

if函數可以嵌套七層,我簡單舉統計成績中用到的一種寫法:
if(a1>=90,"優秀",if(a1>=60,"及格","不及格")
其中a1要看你要分析的單元格的地址,這里只是舉例罷了,實際應用還要看你的需要,分析完以後可以用填充柄填充下面的單元格,公式會自動在大於或等於90分的旁邊寫上優秀兩字,在大於等於60分小於90分旁邊的單無格寫上及格,低於60分的寫上不及格.
如果你是用插入函數的話,選擇if會出現三個格.
第一格填入:a1>=90
第二格填入:優秀
第三格填入:if(a1>=60,"及格","不及格")
希望這個對你的考試有所幫助.
1.IF函數的語法結構
IF函數的語法結構:IF(條件,結果1,結果2),詳細說明可以參照表6-4。
2.IF函數的功能
對滿足條件的數據進行處理,條件滿足則輸出結果1,不滿足則輸出結果2。可以省略結果1或結果2,但不能同時省略。
3.條件表達式
把兩個表達式用關系運算符(主要有=,<>,>,<,>=,<=等6個關系運算符)連接起來就構成條件表達式,例如,在IF(a1+b1+50
<>
b1+c1
50,
1,1)函數式中,條件表達式是a1+b1+50
<>
b1+c1
50。
4.執行過程
下面以IF(a1+b1+50
<>
b1+c1
50,
1,1)函數式為例來說明IF函數的執行過程。
先計算條件表達式a1+b1+50
<>
b1+c1
50,如果表達式成立,值為TRUE,並在函數所在單元格中顯示「
1」;如果表達式不成立,值為FALSE,並在函數所在單元格中顯示「1」。
5.IF函數嵌套的執行過程
如果按等級來判斷某個變數,IF函數的格式如下:
IF(E2>=85,"優",IF(E2>=75,"良",IF(E2>=60,"及格","不及格")))
函數從左向右執行。首先計算E2>=85,如果該表達式成立,則顯示「優」,如果不成立就繼續計算E2>=75,如果該表達式成立,則顯示「良」,否則繼續計算E2>=60,如果該表達式成立,則顯示「及格」,否則顯示「不及格」。
參考資料:
http://www.huianren.net/bbs/simple/index.php?t65843.html
回答者:mysky4u
-
魔法師
四級
6-4
23:28
這個函數是用來判斷的。比如:A列單元格數據是姓名,B列是性別,C列是基本工資。現要求給所有人員增加工資,男增加80,女增加50,把新增工資結果放入D列對應的單元格。
操作過程:在D1單元格輸入=if(B1="男",C1+80,C1+50)
就可以了,下面有再多的數據,就從D1用填充手柄向下填充。
說明:這個函數有三個參數,第一個是邏輯條件,第二個是當值為「真」時的返回值,第三個是當值這「假」的返回值。上例中,對B1單元格進行判斷,如果值是「男」(注意,漢字必須用引號,而且是半形),那麼就在原工資C1的基礎上增加80,如果不是男性,就增加50。
明白了嗎?另外,if函數還可以套用,就是在IF裡面用IF。

2. sql里的ROW_NUMBER() OVER是啥意思

ROW_NUMBER() OVER是oracle資料庫的分析函數,會在數據表生成一個排序列。

語法:ROW_NUMBER ( ) OVER( [ PARTITION BY value_expression , ... [ n ] ]order_by_clause )

參數:PARTITION BYvalue_expression 將 FROM 子句生成的結果集劃入應用了 ROW_NUMBER 函數的分區。value_expression 指定對結果集進行分區所依據的列。如果未指定 PARTITION BY,則此函數將查詢結果集的 所有行視為單個組。

order_by_clause ORDER BY 子句可確定在特定分區中為行分配唯一 ROW_NUMBER 的順序。


(2)資料庫分析函數擴展閱讀

分析函數與聚合函數計算方式一樣,分析函數也是對行集組進行聚合計算,但是它不像普通聚合仗函數那樣每組只返回一個值,分析函數可以為每組返回多個值。

分析函數的語法為:over(partition by排 列名1 order by 列名2 ),括弧中的兩個關鍵詞partition by 和order by 可以只出現一個。over() 前面是一個函數,如果是聚合函數,那麼order by 不能一起使用。

ROW_NUMBER、DENSE_RANK、RANK屬於排名函數。

排名分析函數可以單獨使用ORDER BY 語句,也可以和PARTITION BY同時使用。

PARTITION BY用於將結果集進行分組。

ORDER BY 指定排名分析函數的順序,在排名分析函數中必須使用ORDER BY語句。

ROW_NUMBER 為每一組的行按順序生成一個連續序號。

RANK()也為每一組的行生成一個序號,與ROW_NUMBER()不同的是如果按照ORDER BY的排序,如果有相同的值會生成相同的序號,並且接下來的序號是不連序的。例如兩個相同的行生成序號3,那麼接下來會生成序號5。

3. excel中的資料庫函數

用於對存儲在數據清單或資料庫中的數據進行分析的一些工作表函數,這些函數統稱為Excel的資料庫函數。
Excel資料庫函數主要應用於數據的統計與分析,使用比較多的比如:SUM,LOOKUP,VLOOKUP,PRODUCT等,在製作報表時根據邏輯來使用這些函數能夠很大的提升製作效率

4. excel中資料庫函數是干什麼的

用於對存儲在數據清單或資料庫中的數據進行分析的一些工作表函數,這些函數統稱為Excel的資料庫函數。
Excel資料庫函數主要應用於數據的統計與分析,使用比較多的比如:SUM,LOOKUP,VLOOKUP,PRODUCT等,在製作報表時根據邏輯來使用這些函數能夠很大的提升製作效率。

5. sem數據分析中常用的函數有哪些

常用函數公式:

1、LEN函數:用於統計一個數據或者一個詞出現的次數

使用公式:=LEN(數據),需要進行統計的關鍵詞,主要作用就是計算關鍵詞出現的次數

2、countif函數:統計一個區域的數據中符合一個條件的總數量

使用公式:=countif(區域,條件) 需要注意符號是英文狀態,除了字母,都要加一下雙引號。

3、vlookup函數:縱向查找

使用公式:=vlookup(G:G,A:B,2) G:G相同的一列,A:B查找范圍,2是查找的第幾列

如果沒有相同值,可以自己創造一個相同值。

4、sumif函數:條件求和

使用公式:=sumif(C:C,」>20」,B:B)

C列條件大於20,b列的和,注意符號使用英文狀態下,除了字母都要添加雙引號

5、sumifs函數:多條件求和

使用公式:=sumifs(B:B,C:C,」>80」,D:D,」>80」)

注意先寫要求和的區域,再寫條件

常用的sem數據分析函數,各位小夥伴們學會了嗎?可以多多操作,牢牢記住公式,讓自己的工作更加輕松,事半功倍。

6. 所有的資料庫函數的函數名都以什麼開頭

這個是好多的具體如下:
一、財務函數
ACCRINT 返回定期付息有價證券的應計利息
ACCRINTM 返回到期一次性付息有價證券的應計利息
AMORDEGRC 返回使用折舊系數的每個結算期間的折舊值
AMORLINC 返回每個結算期間的折舊值
COUPDAYBS 返回當前付息期內截止到成交日的天數
COUPDAYS 返回包含成交日所在的付息期的天數
COUPDAYSNC 返回從成交日到下一付息日之間的天數
COUPNCD 返回成交日之後的下一個付息日
COUPNUM 返回成交日和到期日之間的付息次數
COUPPCD 返回成交日之前的前一個的付息日
CUMIPMT 返回兩個期間內累計支付的利息
CUMPRINC 返回一筆貸款在兩個期間內累計償還的本金數額
DB 使用固定余額遞減法,返回一筆資產在給定期間內的折舊值
DDB 使用雙倍余額遞減法或其他指定方法,返回一筆資產在給定期間內的折舊值
DISC 返回有價證券的貼現率
DOLLARDE 將按分數表示的價格轉換為按小數表示的價格
DOLLARFR 將按小數表示的價格轉換為按分數表示的價格
DURATION 返回定期付息有價證券的每年期限
EFFECT 返回實際年利率
FV 返回一筆投資的未來值
FVSCHEDULE 返回應用一系列復利率後的本金的未來值
INTRATE 返回一次性付息有價證券的利率
IPMT 返回一筆投資在給定期間內支付的利息
IRR 返回一系列現金流的內部收益率
ISPMT 計算特定投資期內要支付的利息
MDURATION 返回假設面值 $100 的有價證券的 Macauley 修正期限
MIRR 返回正和負現金流以不同利率進行計算的內部收益率
NOMINAL 返回年名義利率
NPER 返回投資期間的數量
NPV 返回基於一系列定期現金流和貼現率計算的投資的現凈值
ODDFPRICE 返回首期付息日不固定的面值$100 的有價證券價格
ODDFYIELD 返回首期付息日不固定的有價證券的收益率
ODDLPRICE 返回末期付息日不固定的面值$100 的有價證券價格
ODDLYIELD 返回末期付息日不固定的有價證券的收益率
PMT 返回年金的定期支付金額
PPMT 返回一筆投資在給定期間內償還的本金
PRICE 返回定期付息的面值 $100 的有價證券的價格
PRICEDISC 返回折價發行的面值$100 的有價證券的價格
PRICEMAT 返回到期付息的面值$100 的有價證券的價格
PV 返回投資的現值
RATE 返回年金的各期利率
RECEIVED 返回一次性付息的有價證券到期收回的金額
SLN 返回一筆資產在某個期間內的線性折舊值
SYD 返回一筆資產按年限總和折舊法計算的指定期間的折舊值
TBILLEQ 返回國庫券的等效收益率
TBILLPRICE 返回面值 $100 的國庫券的價格
TBILLYIELD 返回國庫券的收益率
VDB 使用余額遞減法,返回一筆資產在給定期間或部分期間內的折舊值
XIRR 返回一組不定期發生的現金流的內部收益率
XNPV 返回一組不定期發生的現金流的凈現值
YIELD 返回定期付息有價證券的收益率
YIELDDISC 返回折價發行的有價證券(如國庫券)的年收益率
YIELDMAT 返回到期付息的有價證券的年收益率

二、日期與時間函數
DATE 返回特定日期的序列號
DATEVALUE 將文本格式的日期轉換為序列號
DAY 將序列號轉換為月的日期
DAYS360 計算基於一年 360 天的兩個日期間的天數
EDATE 返回用於表示開始日期之前或之後月數的日期的序列號
EOMONTH 返回指定個數月之前或之後的月的末日的序列號
HOUR 將序列號轉換為小時
MINUTE 將序列號轉換為分鍾
MONTH 將序列號轉換為月
NETWORKDAYS 返回兩個日期之間的所有工作日個數
NOW 返回當前日期和時間的序列號
SECOND 將序列號轉換為秒
TIME 返回特定時間的序列號
TIMEVALUE 將文本格式的時間轉換為序列號
TODAY 返回今天日期的序列號
WEEKDAY 將序列號轉換為一星期的某天
WEEKNUM 將序列號轉換為代表該星期為一年中的第幾周的數字
WORKDAY 返回指定個數工作日之前或之後日期的序列號
YEAR 將序列號轉換為年
YEARFRAC 返回代表start_date 和 end_date 之間的天數的年分數

三、數學和三角函數
ABS 返回數字的絕對值
ACOS 返回數字的反餘弦值
ACOSH 返回數字的反雙曲餘弦值
ASIN 返回數字的反正弦值
ASINH 返回數字的反雙曲正弦值
ATAN 返回數字的反正切值
ATAN2 返回 X 和 Y 坐標的反正切值
ATANH 返回數字的反雙曲正切值
CEILING 將數字舍入為最接近的整數或最接近的 Significance 的倍數
COMBIN 返回給定數目對象的組合數
COS 返回數字的餘弦
COSH 返回數字的雙曲餘弦值
DEGREES 將弧度轉換為度
EVEN 將數字向上舍入為最接近的偶數
EXP 返回 e 的給定數字次冪
FACT 返回數字的階乘
FACTDOUBLE 返回數字的雙倍階乘
FLOOR 向絕對值減小的方向舍入數字
GCD 返回最大公約數
INT 將數字向下舍入到最接近的整數
LCM 返回最小公倍數
LN 返回數字的自然對數
LOG 按所指定的底數,返回數字的對數
LOG10 返回數字的以 10 為底的對數
MDETERM 返回數組的矩陣行列式的值
MINVERSE 返回數組的逆矩陣
MMULT 返回兩個數組的矩陣乘積
MOD 返回除法的余數
MROUND 返回舍入到指定倍數的數值
MULTINOMIAL 返回一組數字的多項式
ODD 將數字向上舍入為最接近的奇數
PI 返回 pi 的值
POWER 返回給定數字次冪的結果
PRODUCT 將其參數相乘
QUOTIENT 返回除法的整數部分
RADIANS 將角度轉換為弧度
RAND 返回 0 和 1 之間的一個隨機數
RANDBETWEEN 返回指定數字間的隨機數
ROMAN 將阿拉伯數字轉換為文本形式的羅馬數字
ROUND 將數字按指定位數舍入
ROUNDDOWN 向絕對值減小的方向舍入數字
ROUNDUP 向絕對值增大的方向舍入數字
SERIESSUM 返回基於以下公式的冪級數之和
SIGN 返回數字的符號
SIN 返回給定角度的正弦值
SINH 返回數字的雙曲正弦值
SQRT 返回正平方根
SQRTPI 返回某數與 pi 的乘積的平方根
SUBTOTAL 返回列表或資料庫中的分類匯總
SUM 將其參數相加
SUMIF 按給定條件對若干單元格求和
SUMPRODUCT 返回對應的數組元素的乘積和
SUMSQ 返回參數的平方和
SUMX2MY2 返回兩個數組中對應值的平方差之和
SUMX2PY2 返回兩個數組中對應值的平方和之和
SUMXMY2 返回兩數組中對應值的平方差的之和
TAN 返回數字的正切
TANH 返回數字的雙曲正切值
TRUNC 將數字截尾取整

四、統計函數
AVEDEV 返回數據點與它們的平均值的絕對偏差平均值
AVERAGE 返回其參數的平均值
AVERAGEA 返回其參數的平均值,包括數字、文本和邏輯值
BETADIST 返回 Beta 累積分布函數
BETAINV 返回指定 Beta 分布的累積分布函數的反函數
BINOMDIST 返回一元二項式分布的概率值
CHIDIST 返回γ2 分布的單尾概率
CHIINV 返回γ2 分布的單尾概率的反函數
CHITEST 返回獨立性檢驗值
CONFIDENCE 返回總體平均值的置信區間
CORREL 返回兩個數據集之間的相關系數
COUNT 計算參數列表中的數字個數
COUNTA 計算參數列表中的數值個數
COUNTBLANK 計算區間內的空白單元格個數
COUNTIF 計算滿足給定條件的區間內的非空單元格個數
COVAR 返回協方差,成對偏差乘積的平均值
CRITBINOM 返回使累積二項式分布小於或等於臨界值的最小值
DEVSQ 返回偏差的平方和
EXPONDIST 返回指數分布
FDIST 返回 F 概率分布
FINV 返回 F 概率分布的反函數值
FISHER 返回 Fisher 變換
FISHERINV 返回 Fisher 變換的反函數值
FORECAST 返回沿線性趨勢的值
FREQUENCY 以垂直數組的形式返回頻率分布
FTEST 返回 F 檢驗的結果
GAMMADIST 返回伽瑪分布
GAMMAINV 返回伽瑪累積分布函數的反函數
GAMMALN 返回伽瑪函數的自然對數,Γ(x)
GEOMEAN 返回幾何平均值
GROWTH 返回沿指數趨勢的值
HARMEAN 返回調和平均值
HYPGEOMDIST 返回超幾何分布
INTERCEPT 返回線性回歸線的截距
KURT 返回數據集的峰值
LARGE 返回數據集中第 k 個最大值
LINEST 返回線性趨勢的參數
LOGEST 返回指數趨勢的參數
LOGINV 返回對數分布函數的反函數
LOGNORMDIST 返回對數累積分布函數
MAX 返回參數列表中的最大值
MAXA 返回參數列表中的最大值,包括數字、文本和邏輯值
MEDIAN 返回給定數值集合的中值
MIN 返回參數列表中的最小值
MINA 返回參數列表中的最小值,包括數字、文本和邏輯值
MODE 返回在數據集中出現次數最多的值
NEGBINOMDIST 返回負二項式分布
NORMDIST 返回正態累積分布
NORMINV 返回正態累積分布的反函數
NORMSDIST 返回標准正態累積分布
NORMSINV 返回標准正態累積分布的反函數
PEARSON 返回 Pearson 乘積矩相關系數
PERCENTILE 返回區域中數值的第 K 個百分點的值
PERCENTRANK 返回數據集中的值的百分比排位
PERMUT 返回給定數目對象的排列數量
POISSON 返回泊松分布
PROB 返回區域中的數值落在指定區間內的概率
QUARTILE 返回數據集的四分位數
RANK 返回一列數字的數字排位
RSQ 返回 Pearson 乘積矩相關系數的平方
SKEW 返回分布的偏斜度
SLOPE 返回線性回歸線的斜率
SMALL 返回數據集中第 K 個最小值
STANDARDIZE 返回正態化數值
STDEV 估算基於給定樣本的標准偏差
STDEVA 估算基於給定樣本(包括數字、文本和邏輯值)的標准偏差
STDEVP 計算基於給定的樣本總體的標准偏差
STDEVPA 計算基於總體(包括數字、文本和邏輯值)的標准偏差
STEYX 返回通過線性回歸法計算每個 x 的 y 預測值時所產生的標准誤差
TDIST 返回學生的 t 分布
TINV 返回學生的 t 分布的反函數
TREND 返回沿線性趨勢的值
TRIMMEAN 返回數據集的內部平均值
TTEST 返回與學生的 t 檢驗相關的概率
VAR 估算基於樣本的方差
VARA 估算基於樣本(包括數字、文本和邏輯值)的方差
VARP 計算基於樣本總體的方差
VARPA 計算基於樣本總體(包括數字、文本和邏輯值)的方差
WEIBULL 返回韋伯分布
ZTEST 返回 z 檢驗的單尾概率值

五、查找和引用函數
ADDRESS 以文本形式將引用值返回工作表的單個單元格
AREAS 返回引用值中包含的區域個數
CHOOSE 從一列值中選擇值
COLUMN 返回引用的列個數
COLUMNS 返回引用中包含的列個數
HLOOKUP 查找數組的首行,並返回特定單元格的值
HYPERLINK 創建一個快捷方式或跳轉,用以打開存儲在網路伺服器、Intranet 或 Internet 中的文件
INDEX 使用索引從引用或數組選擇值
INDIRECT 返回由文本值指定的引用
LOOKUP 在向量或數組中查找值
MATCH 在引用值或數組中查找值
OFFSET 從給定引用值返回引用偏移量
ROW 返回引用的行個數
ROWS 返回引用中包含的行個數
RTD 從支持 COM 自動化(自動化:從其他應用程序或開發工具使用應用程序的對象的方法。以前稱為「OLE 自動化」,自動化是一種工業標准和組件對象模型 (COM) 功能。)的程序中返回實時數據
TRANSPOSE 返回數組的轉置
VLOOKUP 查找數組首列,移動到行並返回單元格的值

六、資料庫工作表函數
Microsoft Excel 中包含了一些工作表函數,用於對存儲在列表或資料庫中的數據進行分析,這些函數統稱為 Dfunctions,每個函數均有三個參數:database、field 和 criteria。這些參數指向函數所使用的工作表區域。
DAVERAGE 返回選擇的資料庫條目的平均值
DCOUNT 計算資料庫中包含數字的單元格個數
DCOUNTA 計算資料庫中的非空單元格
DGET 從資料庫提取符合指定條件的單個記錄
DMAX 返回選擇的資料庫條目的最大值
DMIN 返回選擇的資料庫條目的最小值
DPRODUCT 將資料庫中符合條件的記錄的特定欄位中的值相乘
DSTDEV 基於選擇的資料庫條目的樣本估算標准偏差
DSTDEVP 基於選擇的資料庫條目的總體計算標准偏差
DSUM 將資料庫中符合條件的記錄的欄位列中的數字相加
DVAR 基於選擇的資料庫條目的樣本估算方差
DVARP 基於選擇的資料庫條目的樣本總體計算方差
GETPIVOTDATA 返回存儲在數據透視表中的數據

七、文本和數據函數
ASC 將字元串中的全形(雙位元組)英文字母或片假名更改為半形(單位元組)字元
BAHTTEXT 使用 ß(泰銖)貨幣格式將數字轉換成文本
CHAR 返回代碼數字所對應的字元
CLEAN 刪除文本中不可列印的字元
CODE 返迴文本字元串中第一個字元的數字代碼
CONCATENATE 將幾個文本項合並為一個文本項
DOLLAR 使用 $(美元)貨幣格式將數字轉換成文本
EXACT 檢查兩個文本值是否相同
FIND 在一個文本值中查找另一個文本值(區分大小寫)
FIXED 將數字格式設置為具有固定小數位數
JIS 將字元串中的半形(單位元組)英文字母或片假名更改為全形(雙位元組)字元
LEFT 返迴文本值中最左邊的字元
LEN 返迴文本字元串中的字元個數
LOWER 將文本轉換為小寫
MID 在文本字元串中,從您所指定的位置開始返回指定數量的字元
PHONETIC 提取文本字元串中的拼音(furigana) 字元
PROPER 將文本值的每個字的首字母大寫
REPLACE 替換文本中的字元
REPT 按照給定的次數重復顯示文本
RIGHT 返迴文本值中最右邊的字元
SEARCH 在一個文本值中查找另一個文本值(不區分大小寫)
SUBSTITUTE 在文本字元串中用新文本替換舊文本
T 將其參數轉換為文本
TEXT 設置數字格式並將其轉換為文本
TRIM 從文本刪除空格
UPPER 將文本轉換成大寫形式
VALUE 將文本參數轉換為數字

八、邏輯運算符
AND 如果其所有參數為 TRUE,則返回 TRUE
FALSE 返回邏輯值 FALSE
IF 指定要執行的邏輯檢驗
NOT 對其參數的邏輯求反
OR 如果所有參數為 TRUE,則返回 TRUE
TRUE 返回邏輯值 TRUE

九、信息函數
CELL 返回單元格的格式、位置或內容等信息
ERROR.TYPE 返回相應錯誤類型的個數
INFO 返回有關當前操作環境的信息
ISBLANK 如果值為空,則返回 TRUE
ISERR 如果值為除 #N/A 以外的任何錯誤值,則返回TRUE
ISERROR 如果值為任何錯誤值,則返回 TRUE
ISEVEN 如果數字為偶數,則返回 TRUE
ISLOGICAL 如果值為邏輯值,則返回TRUE
ISNA 如果值為 #N/A 錯誤值,則返回 TRUE
ISNONTEXT 如果值不為文本,則返回TRUE
ISNUMBER 如果值為數字,則返回TRUE
ISODD 如果數字為奇數,則返回 TRUE
ISREF 如果值為引用值,則返回 TRUE
ISTEXT 如果值為文本,則返回 TRUE
N 返回轉換為數字的值
NA 返回錯誤值 #N/A
TYPE 返回表示值的數據類型的數字

十、工程函數
BESSELI 返回已修改的 Bessel 函數 In(x)
BESSELJ 返回 Bessel 函數 Jn(x)
BESSELK 返回已修改的 Bessel 函數 Kn(x)
BESSELY 返回 Bessel 函數 Yn(x)
BIN2DEC 將二進制數轉換為十進制數
BIN2HEX 將二進制數轉換為十六進制數
BIN2OCT 將二進制數轉換為八進制數
COMPLEX 將實系數和虛系數轉換為復數
CONVERT 將數字從一個度量系統轉換為另一個度量系統
DEC2BIN 將十進制數轉換為二進制數
DEC2HEX 將十進制數轉換為十六進制數
DEC2OCT 將十進制數轉換為八進制數
DELTA 檢驗是否兩個值相等
ERF 返回錯誤函數
ERFC 返回互補錯誤函數
GESTEP 檢驗數字是否大於閾值
HEX2BIN 將十六進制數轉換為二進制數
HEX2DEC 將十六進制數轉換為十進制數
HEX2OCT 將十六進制數轉換為八進制數
IMABS 返回復數的的絕對值(模數)
IMAGINARY 返回復數的虛系數
IMARGUMENT 返回參數 theta,即以弧度表示的角
IMCONJUGATE 返回復數的共軛復數
IMCOS 返回復數的餘弦
IMDIV 返回兩個復數的商
IMEXP 返回復數的指數
IMLN 返回復數的自然對數
IMLOG10 返回復數的以 10 為底的對數
IMLOG2 返回復數的以 2 為底的對數
IMPOWER 返回整數次冪的復數
IMPRODUCT 返回兩個復數的積
IMREAL 返回復數的實系數
IMSIN 返回復數的正弦
IMSQRT 返回復數的平方根
IMSUB 返回兩個復數的差
IMSUM 返回多個復數的和
OCT2BIN 將八進制數轉換為二進制數
OCT2DEC 將八進制數轉換為十進制數
OCT2HEX 將八進制數轉換為十六進制數

7. 能說一下oracle中的開窗函數 聚合函數 分析函數都是什麼嗎

我也是用oracle資料庫的,在實際開發中用到開窗函數和分析函數的機會還是很少的,用聚合函數的時候非常多,請LZ多關注聚合函數,下面是我上各大網站收集的,希望對樓主有所幫助。

分析函數用於計算基於組的某種聚合值,它和聚合函數的不同之處是
對於每個組返回多行,而聚合函數對於每個組只返回一行。
下面通過幾個例子來說明其應用。
1:統計某商店的營業額。
date sale
1 20
2 15
3 14
4 18
5 30
規則:按天統計:每天都統計前面幾天的總額
得到的結果:
DATE SALE SUM
----- -------- ------
1 20 20 --1天
2 15 35 --1天+2天
3 14 49 --1天+2天+3天
4 18 67 .
5 30 97 .

2:統計各班成績第一名的同學信息
NAME CLASS S
----- ----- ----------------------
fda 1 80
ffd 1 78
dss 1 95
cfe 2 74
gds 2 92
gf 3 99
ddd 3 99
adf 3 45
asdf 3 55
3dd 3 78

通過:
--
select * from
(
select name,class,s,rank()over(partition by class order by s desc) mm from t2
)
where mm=1
--
得到結果:
NAME CLASS S MM
----- ----- ---------------------- ----------------------
dss 1 95 1
gds 2 92 1
gf 3 99 1
ddd 3 99 1

注意:
1.在求第一名成績的時候,不能用row_number(),因為如果同班有兩個並列第一,row_number()只返回一個結果
2.rank()和dense_rank()的區別是:
--rank()是跳躍排序,有兩個第二名時接下來就是第四名
--dense_rank()l是連續排序,有兩個第二名時仍然跟著第三名

3.分類統計 (並顯示信息)
A B C
-- -- ----------------------
m a 2
n a 3
m a 2
n b 2
n b 1
x b 3
x b 2
x b 4
h b 3
select a,c,sum(c)over(partition by a) from t2
得到結果:
A B C SUM(C)OVER(PARTITIONBYA)
-- -- ------- ------------------------
h b 3 3
m a 2 4
m a 2 4
n a 3 6
n b 2 6
n b 1 6
x b 3 9
x b 2 9
x b 4 9

如果用sum,group by 則只能得到
A SUM(C)
-- ----------------------
h 3
m 4
n 6
x 9
無法得到B列值

=====
select * from test

數據:
A B C
1 1 1
1 2 2
1 3 3
2 2 5
3 4 6

---將B欄位值相同的對應的C 欄位值加總
select a,b,c, SUM(C) OVER (PARTITION BY B) C_Sum
from test

A B C C_SUM
1 1 1 1
1 2 2 7
2 2 5 7
1 3 3 3
3 4 6 6

---如果不需要已某個欄位的值分割,那就要用 null

eg: 就是將C的欄位值summary 放在每行後面

select a,b,c, SUM(C) OVER (PARTITION BY null) C_Sum
from test

A B C C_SUM
1 1 1 17
1 2 2 17
1 3 3 17
2 2 5 17
3 4 6 17

求個人工資占部門工資的百分比
SQL> select * from salary;

NAME DEPT SAL
---------- ---- -----
a 10 2000
b 10 3000
c 10 5000
d 20 4000

SQL> select name,dept,sal,sal*100/sum(sal) over(partition by dept) percent from salary;

NAME DEPT SAL PERCENT
---------- ---- ----- ----------
a 10 2000 20
b 10 3000 30
c 10 5000 50
d 20 4000 100
二:開窗函數
開窗函數指定了分析函數工作的數據窗口大小,這個數據窗口大小可能會隨著行的變化而變化,舉例如下:
1:
over(order by salary) 按照salary排序進行累計,order by是個默認的開窗函數
over(partition by deptno)按照部門分區
2:
over(order by salary range between 5 preceding and 5 following)
每行對應的數據窗口是之前行幅度值不超過5,之後行幅度值不超過5
例如:對於以下列
aa
1
2
2
2
3
4
5
6
7
9

sum(aa)over(order by aa range between 2 preceding and 2 following)
得出的結果是
AA SUM
---------------------- -------------------------------------------------------
1 10
2 14
2 14
2 14
3 18
4 18
5 22
6 18
7 22
9 9

就是說,對於aa=5的一行,sum為 5-1<=aa<=5+2 的和
對於aa=2來說,sum=1+2+2+2+3+4=14 ;
又如 對於aa=9 ,9-1<=aa<=9+2 只有9一個數,所以sum=9 ;

3:其它:
over(order by salary rows between 2 preceding and 4 following)
每行對應的數據窗口是之前2行,之後4行
4:下面三條語句等效:
over(order by salary rows between unbounded preceding and unbounded following)
每行對應的數據窗口是從第一行到最後一行,等效:
over(order by salary range between unbounded preceding and unbounded following)
等效
over(partition by null)

other(
數用於計算基於組的某種聚合值,它和聚合函數的不同之處是對於每個組返回多行,而聚合函數對於每個組只返回一行。
一、 over函數
over函數指定了分析函數工作的數據窗口的大小,這個數據窗口大小可能會隨著行的變化而變化,例如:
over(order by salary)按照salary排序進行累計,order by是個默認的開窗函數
over(partition by deptno) 按照部門分區
over(order by salary range between 50 preceding and 150 following)每行對應的數據窗口是之前行幅度值不超過50,之後行幅度值不超過150的數據記錄
over(order by salary rows between 50 perceding and 150 following)前50行,後150行
over(order by salary rows between unbounded preceding and unbounded following)所有行
over(order by salary range between unbounded preceding and unbounded following)所有行
二、 sum函數
功能描述:該函數計算組中表達式的累積和。
SAMPLE:下例計算同一經理下員工的薪水累積值
SELECT manager_id, last_name, salary,
SUM (salary) OVER (PARTITION BY manager_id ORDER BY salary
RANGE UNBOUNDED PRECEDING) l_csum
FROM employees
WHERE manager_id in (101,103,108);
三、 應用實例
1, 測試環境設置
設有銷售表t_sales (subcompany,branch,region,customer,sale_qty); 存儲客戶的銷售明細,記錄如下所示。
Subcompany Branch Region Customer Sale_qty
北京分公司 北京經營部 片區1 客戶1 1
北京分公司 北京經營部 片區1 客戶1 1
北京分公司 北京經營部 片區1 客戶2 1
北京分公司 北京經營部 片區1 客戶2 1
北京分公司 北京經營部 片區2 客戶1 1
北京分公司 北京經營部 片區2 客戶1 1
北京分公司 北京經營部 片區2 客戶2 1
北京分公司 北京經營部 片區2 客戶2 1
北京分公司 其他經營部 片區1 客戶1 1
北京分公司 其他經營部 片區1 客戶1 1
北京分公司 其他經營部 片區1 客戶2 1
北京分公司 其他經營部 片區1 客戶2 1
北京分公司 其他經營部 片區2 客戶1 1
北京分公司 其他經營部 片區2 客戶1 1
北京分公司 其他經營部 片區2 客戶2 1
北京分公司 其他經營部 片區2 客戶2 1
create table t_sales(
subcompany varchar2(40),
branch varchar2(40),
region varchar2(40),
customer varchar2(40),
sale_qty numeric(18,4)
);

comment on table t_sales is '銷售表,分析函數測試';
comment on column t_sales.subcompany is '分公司';
comment on column t_sales.branch is '經營部';
comment on column t_sales.region is '片區';
comment on column t_sales.customer is '客戶';
comment on column t_sales.sale_qty is '銷售數量';

2,問題提出
現在要求給出銷售匯總報表,報表中需要提供的數據包括客戶匯總,和客戶在其上級機構中的銷售比例。
Subcompany Branch Region Customer Sale_qty Rate
北京分公司 北京經營部 片區1 客戶1 2 50%
北京分公司 北京經營部 片區1 客戶2 2 50%
北京分公司 北京經營部 片區1 小計 4 50%
北京分公司 北京經營部 片區2 客戶1 2 50%
北京分公司 北京經營部 片區2 客戶2 2 50%
北京分公司 北京經營部 片區2 小計 4 50%
北京分公司 北京經營部 小計 小計 8 50%
北京分公司 北京經營部 片區1 客戶1 2 50%
北京分公司 北京經營部 片區1 客戶2 2 50%
北京分公司 北京經營部 片區1 小計 4 50%
北京分公司 北京經營部 片區2 客戶1 2 50%
北京分公司 北京經營部 片區2 客戶2 2 50%
北京分公司 北京經營部 片區2 小計 4 50%
北京分公司 北京經營部 小計 小計 8 50%
北京分公司 小計 小計 小計 16 100%
3,解決方案(方案1)
首先我們可以使用oracle對group by 的擴展功能rollup得到如下的聚合匯總結果。
select
subcompany,
branch,
region,
customer,
sum(sale_qty) sale_qty
from t_sales
group by rollup(subcompany,branch,region,customer);
Subcompany Branch Region Customer Sale_qty
北京分公司 北京經營部 片區1 客戶1 2
北京分公司 北京經營部 片區1 客戶2 2
北京分公司 北京經營部 片區1 4
北京分公司 北京經營部 片區2 客戶1 2
北京分公司 北京經營部 片區2 客戶2 2
北京分公司 北京經營部 片區2 4
北京分公司 北京經營部 8
北京分公司 其他經營部 片區1 客戶1 2
北京分公司 其他經營部 片區1 客戶2 2
北京分公司 其他經營部 片區1 4
北京分公司 其他經營部 片區2 客戶1 2
北京分公司 其他經營部 片區2 客戶2 2
北京分公司 其他經營部 片區2 4
北京分公司 其他經營部 8
北京分公司 16
16
分析上面的臨時結果,我們看到:
明細到客戶的匯總信息,其除數為當前的sum(sale_qty),被除數應該是到片區的小計信息。
明細到片區的匯總信息,其除數為片區的sum(sale_qty),被除數為聚合到經營部的匯總數據。
。。。
考慮到上述因素,我們可以使用oracle的開窗函數over,將數據定位到我們需要定位的記錄。如下代碼中,我們利用開窗函數over直接將數據定位到其上次的小計位置。
over(partition by decode(f_branch, 1, null, subcompany), decode(f_branch, 1, null, decode(f_region, 1, null, branch)), decode(f_branch, 1, null, decode(f_region, 1, null, decode(f_customer, 1, null, region))), null)
經整理後的查詢語句如下。
select subcompany,
decode(f_branch, 1,subcompany||'(С¼Æ)', branch),
decode(f_region,1,branch||'(С¼Æ)',region),
decode(f_customer,1,region||'(С¼Æ)', customer),
sale_qty,
trim(to_char(round(sale_qty/
sum(sale_qty) over(partition by decode(f_branch, 1, null, subcompany), decode(f_branch, 1, null, decode(f_region, 1, null, branch)), decode(f_branch, 1, null, decode(f_region, 1, null, decode(f_customer, 1, null, region))), null),2) *100,99990.99))
from (select grouping(branch) f_branch,
grouping(region) f_region,
grouping(customer) f_customer,
subcompany,
branch,
region,
customer,
sum(sale_qty) sale_qty
from t_sales
group by subcompany, rollup(branch, region, customer))
Subcompany Branch Region Customer Sale_qty Rate
北京分公司 北京經營部 片區1 客戶1 2 50.00
北京分公司 北京經營部 片區1 客戶2 2 50.00
北京分公司 北京經營部 片區2 客戶1 2 50.00
北京分公司 北京經營部 片區2 客戶2 2 50.00
北京分公司 北京經營部 片區1 片區1(小計) 4 50.00
北京分公司 北京經營部 片區2 片區2(小計) 4 50.00
北京分公司 其他經營部 片區1 客戶1 2 50.00
北京分公司 其他經營部 片區1 客戶2 2 50.00
北京分公司 其他經營部 片區2 客戶1 2 50.00
北京分公司 其他經營部 片區2 客戶2 2 50.00
北京分公司 其他經營部 片區1 片區1(小計) 4 50.00
北京分公司 其他經營部 片區2 片區2(小計) 4 50.00
北京分公司 北京經營部 北京經營部(小計) (小計) 8 50.00
北京分公司 其他經營部 其他經營部(小計) (小計) 8 50.00
北京分公司 北京分公司(小計) (小計) (小計) 16 100.00
北京分公司 北京經營部 片區1 客戶1 2 50.00
4,可能的另外一種解決方式(方案2)
select subcompany,
decode(f_branch, 1,subcompany||'(С¼Æ)', branch),
decode(f_region,1,branch||'(С¼Æ)',region),
decode(f_customer,1,region||'(С¼Æ)', customer),
sale_qty,
/* trim(to_char(round(sale_qty/*/
decode(f_branch+f_region+f_customer,
0,
(sum(sale_qty) over(partition by subcompany,branch,region))/2,
1,
(sum(sale_qty) over(partition by subcompany,branch))/3,
2,
(sum(sale_qty) over(partition by subcompany))/4 ,
sum(sale_qty) over()/4
)/*
,2) *100,99990.99))*/
from (select grouping(branch) f_branch,
grouping(region) f_region,
grouping(customer) f_customer,
subcompany,
branch,
region,
customer,
sum(sale_qty) sale_qty
from t_sales
group by subcompany, rollup(branch, region, customer))
在上面的解決方式中,最大的問題在於開窗函數過大。導致每次計算涉及到的行數過多,影響到執行的速度和效率。並且需要額外的計算處理清除多餘疊加進去的數值 。

8. mysql怎麼分析函數row

第一種方法:
select (@i:=@i+1) as i,table_name.* from table_name,(select @i:=0) as it
第二種方法:
set @rownum=0;
select @rownum:=@rownum+1 as rownum, t.username from auth_user t limit 1,5;

9. Oracle資料庫函數有幾種與作用

數值型函數:操作數字類型
字元型函數:操作字元型
日期型的函數:操作日期型
轉換函數:轉換類型
聚組函數:統計和、差、積等操作
分析函數:連續求和、排序等
其他函數:很多,沒有表中分類