久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

greatest函數與least函數怎么在oracle中使用

149次閱讀
沒有評論

共計 2356 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章給大家介紹 greatest 函數與 least 函數怎么在 oracle 中使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

greatest (max(one),max(two),max(three))

求多列的最大值,oracle 中的 greatest 函數

已知表 TB 的數據如下

SQL  select * from tb;
 ID CHINESE MATH ENGLISH
 ---------- ---------- ---------- ----------
 1001 89 98 87
 1002 81 87 79

現在要得到如下的結果,該怎么來解決

ID CHINESE MATH ENGLISH MAX MIN
 ---------- ---------- ---------- ---------- ---------- ----------
 1001 89 98 87 98 87
 1002 81 87 79 87 79

想了半天也沒想到啥好辦法,首先自然而然想到用 MAX 和 MIN 函數,但是顯然這兩個是聚集函數,是要作用在同一個 column 的一個 Group 上面的,而現在要得到的 MAX 和 MIN 的值卻是作用于每一行上面的,如果要借助于 MAX()和 MIN()的話,還需要對原表的數據結構進行下處理(先進行轉列操作 unpivot),但是顯然不是很好。

  看到有個網友回帖用 greatest 和 least 函數 來做,真是簡潔漂亮,也為自己的孤陋寡聞而狂汗呀

  解決方式如下

SQL  SELECT id, chinese, math, english,
 2 greatest (chinese, math, english) max,
 3 least(chinese, math, english) min
 4 FROM tb;
 ID CHINESE MATH ENGLISH MAX MIN
 ---------- ---------- ---------- ---------- ---------- ----------
 1001 89 98 87 98 87
 1002 81 87 79 87 79

least 的用法相同

  語法介紹:

1  語法

GREATEST(expr_1, expr_2, …expr_n)

2  說明

GREATEST(expr_1, expr_2, …expr_n) 函數從表達式(列、常量、計算值)expr_1,

 expr_2, … expr_n 等中找出最大的數返回。在比較時,OracIe 會自動按表達式的數據類型進行比較,以 expr_1 的數據類型為準。

 3 

允許使用的位置

過程性語句和 SQL 語句。

4  示例

4.1  示例一【數值】

expr_1 為數值型。按大小進行比較。

全部為數值型,取出最大值為 16:

SQL SELECT GREATEST(2, 5, 12, 3, 16, 8, 9) A FROM DUAL; 
---------- 
16

部分為數值型,但是字符串可以根據 expr_1 的數據類型通過隱式類型轉換轉成數值型:

SQL SELECT GREATEST(2,  5 , 12, 3, 16, 8, 9) A FROM DUAL; 
---------- 
16

部分為數值型,但是字符串不能通過隱式類型轉換成數值型會報錯,因為字符串 A 不能轉換成數值型:

SQL SELECT GREATEST(2,  A , 12, 3, 16, 8, 9) A FROM DUAL;
SELECTGREATEST(2,  A , 12, 3, 16, 8, 9) A FROM DUAL

ORA-01722:

無效數字

4.2  示例二【字符串】

expr_1 為字符型。按首字母進行比較(如果相等則向下比較)

全部為字符型,取出最大值 G:

SQL  
SELECT GREATEST(A ,  B ,  C ,  D ,  E ,  F , G) A FROM DUAL;
G

全部為字符型,首字母相等:

SQL  
SELECT GREATEST(A ,  B ,  C ,  D ,  E , GA ,  GAB) A FROM DUAL;
GAB

部分為字符型,會把非字符型轉換成字符型:

SQL  
SELECT GREATEST(A , 6, 7, 5000,  E ,  F , G) A FROM DUAL;
G

4.3  示例三【時間】

expr_1 為時間類型。

全部為時間類型:

SQL  
SELECTGREATEST(sysdate,TO_DATE( 2014-08-01 , YYYY-MM-DD)) A FROM DUAL;
-----------
2014/8/1

部分為時間類型,不能進行隱式類型轉換:

SQL  
SELECT GREATEST(sysdate, 2014-08-01) A FROMDUAL;
SELECTGREATEST(sysdate, 2014-08-01) A FROM DUAL

ORA-01861: 文字與格式字符串不匹配

 4.4  示例四【空值】

使用 GREATEST 取最大值的時候,當 expr 為函數的時候,不可避免的會產生空值。產生空值,函數 GREATEST 會怎么進行處理那:

expr_1 為 NULL 時:

SQL  
SELECT GREATEST(NULL,  B ,  C ,  D ,  E , GA ,  GAB) A FROM DUAL;
-

expr_1 不為 NULL 時,其它的 expr 為 NULL 時:

SQL  
SELECT GREATEST(A ,  B ,  C ,  D ,  E ,NULL,  GAB) A FROM DUAL;
-

關于 greatest 函數與 least 函數怎么在 oracle 中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2356字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 增城市| 安新县| 彭阳县| 丹凤县| 桂阳县| 禄丰县| 金秀| 芦溪县| 台湾省| 宁陵县| 调兵山市| 乐清市| 双城市| 白玉县| 灌云县| 高州市| 盱眙县| 南京市| 含山县| 花垣县| 和静县| 张北县| 万全县| 晋江市| 榕江县| 连州市| 漯河市| 洪湖市| 田阳县| 新干县| 姜堰市| 沙田区| 台湾省| 鄢陵县| 赤峰市| 施秉县| 昌乐县| 呼图壁县| 资中县| 康平县| 都江堰市|