oracle中的greatest 函數和 least函數

来源:https://www.cnblogs.com/moyijian/archive/2018/11/27/10029236.html
-Advertisement-
Play Games

oracle中的greatest 函數和 least函數 原文地址:https://blog.csdn.net/sinat_32023305/article/details/78778596 oracle中的greatest 函數和 least函數 oracle中的greatest 函數和 leas ...


oracle中的greatest 函數和 least函數

原文地址:https://blog.csdn.net/sinat_32023305/article/details/78778596   

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;        
A ----------       
16 部分為數值型,但是字元串可以根據expr_1的數據類型通過隱式類型轉換轉成數值型: SQL>SELECT GREATEST(2, '5', 12, 3, 16, 8, 9) A FROM DUAL;        
A ----------       
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; A - G 全部為字元型,首字母相等: SQL>
SELECT GREATEST('A', 'B', 'C', 'D', 'E','GA', 'GAB') A FROM DUAL; A --- GAB 部分為字元型,會把非字元型轉換成字元型: SQL>
SELECT GREATEST('A', 6, 7, 5000, 'E', 'F','G') A FROM DUAL; A - G   4.3            示例三【時間】 expr_1為時間類型。 全部為時間類型: SQL>
SELECTGREATEST(sysdate,TO_DATE('2014-08-01','YYYY-MM-DD')) A FROM DUAL; A ----------- 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; A -   expr_1不為NULL時,其它的expr為NULL時: SQL>
SELECT GREATEST('A', 'B', 'C', 'D', 'E',NULL, 'GAB') A FROM DUAL; A -   由上可以發現,只要GREATEST的expr有一個為NULL,都會返回NULL。
--------------------- 
原文:https://blog.csdn.net/liangweiwei130/article/details/36384145
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 用戶管理命令--useradd 作用:用於添加一個新的用戶 選項的常用介紹 使用-c添加用戶的註釋時,如果需要添加的內容較多,並且中間使用逗號隔開。這時需要使用“ ”將註釋內容包含 註意點:使用useradd新創建的用戶是不可以登錄的,因為沒有設置密碼。當我們使用cat /etc/shadow命令時 ...
  • 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~ 本文由9527發表 根功能變數名稱伺服器是功能變數名稱解析系統(DNS)中最為頂級的功能變數名稱伺服器,它們負責管理頂級域的權威功能變數名稱伺服器地址。作為互聯網基礎設施的重要部分,所有功能變數名稱的解析操作均離不開它們。下麵我們將從 DNS 協議實現的角度分析為什麼全球只有13 ...
  • 說明:(easypanel集成了kangle web 伺服器和mysql,僅支持centos 5和centos 6) 。執行下麵的命令即可,安裝程式將自動安裝或者升級: yum -y install wget;wget http://kangle.odata.cc/start;sh start 運行 ...
  • passwd 文件 位置:/etc/passwd 作用:用於保存用戶的賬戶信息 註意點:由於passwd也可以作為一個命令直接使用,也可以作為配置文件,所以如果使用man命令進行查看幫助信息時,應該有2種寫法 使用 cat /etc/passwd 命令以後,會看到這樣的畫面 我們會看到7個欄位,分別 ...
  • 鑒於Firefox安裝配置文件: 因此對於Firefox下的安裝如下: sudo cp libflashplayer.so /usr/lib64/browser-plugins/(64位Firefox) sudo cp libflashplayer.so /usr/lib/browser-plugi ...
  • 系統版本:CentOS 7.4 top uptime vmstat mpstat sar pidstat ...
  • 一、知識準備 1、在linux中,一切皆為文件,所有不同種類的類型都被抽象成文件(比如:塊設備,socket套接字,pipe隊列) 2、操作這些不同的類型就像操作文件一樣,比如增刪改查等 3、塊設備支持隨機訪問,而字元設備只能依據先後順序來讀取數據。最典型的字元設備就是tty 二、環境準備 | 組件 ...
  • 1.安裝Apache 下載目錄: 安裝程式: 檢查是否安裝成功: 檢查安裝位置: 檢查安裝版本: 檢查安裝成功:在本機瀏覽器輸入伺服器ip,預設根目錄 /var/www 2.安裝Mysql 安裝mysql服務: 安裝mysql客戶端: 查詢mysql狀態: 登錄mysql: 3.安裝php 安裝ph ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...