SQL CASE表達式的用法

SQL CASE表達式的用法

    • 一、CASE表達式的基礎語法
      • 簡單CASE表達式
      • 搜索CASE表達式
    • 二、簡單CASE表達式的應用示例
    • 三、搜索CASE表達式的應用示例
    • 四、CASE表達式在聚合函數中的應用
    • 五、嵌套CASE表達式的應用

今天在也無力用到了CASE表達式,于是有了這篇博客,CASE表達式是一個極為實用的工具,能幫助開發者實現復雜的條件邏輯判

一、CASE表達式的基礎語法

CASE表達式主要有兩種語法形式:簡單CASE表達式和搜索CASE表達式。

簡單CASE表達式

CASE expressionWHEN value1 THEN result1WHEN value2 THEN result2...ELSE result
END

其中,expression是需要計算的表達式,value1value2等是與expression進行比較的值,result1result2等是當expression等于對應值時返回的結果。ELSE result是可選部分,當expression不等于任何指定值時返回此結果,若省略則默認返回NULL

搜索CASE表達式

CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE result
END

這里的condition1condition2等是要計算的條件,result1result2等是當對應條件為真時返回的結果。ELSE result同樣可選,當所有條件都為假時返回,省略時默認返回NULL

二、簡單CASE表達式的應用示例

假設有一張員工表employees,包含employee_idnamedepartment_id字段。我們想根據department_id顯示部門名稱。

SELECT employee_id,name,department_id,CASE department_idWHEN 1 THEN '銷售部'WHEN 2 THEN '研發部'WHEN 3 THEN '財務部'ELSE '其他部門'END AS department_name
FROM employees;

通過這個查詢,就能將數字形式的department_id轉換為具體的部門名稱。

三、搜索CASE表達式的應用示例

繼續以employees表為例,這次我們想根據員工的薪資范圍來劃分薪資等級。

SELECT employee_id,name,salary,CASEWHEN salary >= 10000 THEN '高薪資'WHEN salary >= 5000 THEN '中等薪資'ELSE '低薪資'END AS salary_level
FROM employees;

利用搜索CASE表達式,依據不同的薪資條件判斷出薪資等級。

四、CASE表達式在聚合函數中的應用

假設我們要統計不同薪資等級的員工人數。

SELECT SUM(CASE WHEN salary >= 10000 THEN 1ELSE 0END) AS high_salary_count,SUM(CASE WHEN salary >= 5000 THEN 1ELSE 0END) AS medium_salary_count,SUM(CASE WHEN salary < 5000 THEN 1ELSE 0END) AS low_salary_count
FROM employees;

在聚合函數SUM中結合CASE表達式,實現了對不同薪資等級員工人數的統計。

五、嵌套CASE表達式的應用

當遇到更為復雜的條件判斷時,可以使用嵌套CASE表達式。比如,在統計員工績效時,先判斷是否完成基本任務量,再根據完成的超額比例進行細分。

SELECT employee_id,name,task_completion,CASEWHEN task_completion >= 100 THENCASEWHEN task_completion >= 150 THEN '卓越'WHEN task_completion >= 120 THEN '優秀'ELSE '良好'ENDELSE '待提高'END AS performance_level
FROM employees;

通過這種嵌套方式,能處理多維度的條件判斷。

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

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

相關文章

Unity 編輯器熱更C# FastScriptReload

工具源碼&#xff1a;https://github.com/handzlikchris/FastScriptReload 介紹 用于運行時修改C#后能快速重新編譯C#并生效&#xff0c;避免每次改C#&#xff0c;unity全部代碼重新編譯&#xff0c;耗時舊且需要重啟游戲。 使用 需要手動調整AssetPipeline自動刷新模式&…

MySQL InnoDB引擎 MVCC

MVCC&#xff08;Multi-Version Concurrency Control&#xff09;即多版本并發控制&#xff0c;是 MySQL 的 InnoDB 存儲引擎實現并發控制的一種重要技術。它在很多情況下避免了加鎖操作&#xff0c;從而提高了數據庫的并發性能。 一、原理 MVCC 的核心思想是通過保存數據在某…

從0到1:ArkTS實現鴻蒙策略模式全解析

策略模式初窺 策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;它定義了一系列算法&#xff0c;并將每個算法封裝起來&#xff0c;使它們可以相互替換&#xff0c;且算法的變化不會影響到使用算法的客戶端。在軟件開發中&#xff0c;策略模…

iOS AES/CBC/CTR加解密以及AES-CMAC

感覺iOS自帶的CryptoKit不好用&#xff0c;有個第三方庫CryptoSwift還不錯&#xff0c;好巧不巧&#xff0c;清理過Xcode緩存后死活下載不下來&#xff0c;當然也可以自己編譯個Framework&#xff0c;但是偏偏不想用第三方庫了&#xff0c;于是研究了一下&#xff0c;自帶的Com…

vue純靜態實現 視頻轉GIF 功能(附源碼)

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、實現后的效果二、使用步驟1.引入庫2.下載or復制出來js3. 前端實現 總結 前言 一天一個小demo 今天來一個vue純靜態實現 視頻轉GIF 功能 上一篇我們講到了…

因果機器學習(CausalML)前沿創新思路

結合了傳統因果推斷與機器學習的因果機器學習是目前AI領域的前沿研究方向&#xff0c;其核心優勢在于將因果邏輯融入數據驅動模型&#xff0c;從根本上解決了傳統方法的缺陷。因此&#xff0c;它也是突破傳統機器學習瓶頸的關鍵方向&#xff0c;不僅當下熱度高&#xff0c;在未…

【CubeMX+STM32】SD卡 U盤文件系統 USB+FATFS

本篇&#xff0c;將使用CubeMXKeil, 創建一個 USBTF卡存儲FatFS 的虛擬U盤讀寫工程。 目錄 一、簡述 二、CubeMX 配置 SDIO DMA FatFs USB 三、Keil 編輯代碼 四、實驗效果 串口助手&#xff0c;實現效果&#xff1a; U盤&#xff0c;識別效果&#xff1a; 一、簡述 上…

docker nginx 配置文件詳解

在平常的開發工作中&#xff0c;我們經常需要訪問靜態資源&#xff08;圖片、HTML頁面等&#xff09;、訪問文件目錄、部署項目時進行負載均衡等。那么我們就會使用到Nginx&#xff0c;nginx.conf 的配置至關重要。那么今天主要結合訪問靜態資源、負載均衡等總結下 nginx.conf …

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_atomic_cmp_set 函數

目錄 修正 執行 ./configure 命令時&#xff0c;輸出&#xff1a; checking for OS Linux 6.8.0-52-generic x86_64 checking for C compiler ... found using GNU C compiler gcc version: 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) 所以當前環境是 x86_64 于是在 src…

在 Go 中實現事件溯源:構建高效且可擴展的系統

事件溯源&#xff08;Event Sourcing&#xff09;是一種強大的架構模式&#xff0c;它通過記錄系統狀態的變化&#xff08;事件&#xff09;來重建系統的歷史狀態。這種模式特別適合需要高可擴展性、可追溯性和解耦的系統。在 Go 語言中&#xff0c;事件溯源可以通過一些簡單的…

大數據Orc文件生成與讀取

ORC(Optimized Row Columnar)是Hadoop生態系統中一種高效的列式存儲文件格式,其主要特性包括高效壓縮、快速讀取、以及能夠存儲結構化數據。本文將展示如何使用Java編寫代碼來生成和讀取ORC文件。 一、ORC文件介紹 ORC是一種為Hadoop生態系統優化的列式存儲格式,具有以下…

解讀 Flink Source 接口重構后的 KafkaSource

前言 Apache Kafka 和 Apache Flink 的結合&#xff0c;為構建實時流處理應用提供了一套強大的解決方案[1]。Kafka 作為高吞吐量、低延遲的分布式消息隊列&#xff0c;負責數據的采集、緩沖和分發&#xff1b;而 Flink 則是功能強大的流處理引擎&#xff0c;負責對數據進行實時…

【推理llm論文精讀】DeepSeek V3技術論文_精工見效果

先附上原始論文和效果對比https://arxiv.org/pdf/2412.19437 摘要 (Abstract) DeepSeek-V3是DeepSeek-AI團隊推出的最新力作&#xff0c;一個強大的混合專家&#xff08;Mixture-of-Experts&#xff0c;MoE&#xff09;語言模型。它擁有671B的總參數量&#xff0c;但每個tok…

如何使用Java語言在Idea和Android中分別建立服務端和客戶端實現局域網聊天

手把手教你用Java語言在Idea和Android中分別建立服務端和客戶端實現局域網聊天 目錄 文章目錄 手把手教你用**Java**語言在**Idea**和**Android**中分別建立**服務端**和**客戶端**實現局域網聊天**目錄**[toc]**基本實現****問題分析****服務端**Idea:結構預覽Server類代碼解…

java韓順平最新教程,Java工程師進階

簡介 HikariCP 是用于創建和管理連接&#xff0c;利用“池”的方式復用連接減少資源開銷&#xff0c;和其他數據源一樣&#xff0c;也具有連接數控制、連接可靠性測試、連接泄露控制、緩存語句等功能&#xff0c;另外&#xff0c;和 druid 一樣&#xff0c;HikariCP 也支持監控…

如何在 IDE 里使用 DeepSeek?

近期&#xff0c;阿里云百煉平臺重磅推出 DeepSeek-V3、DeepSeek-R1、DeepSeek-R1-Distill-Qwen-32B 等 6 款模型&#xff0c;進一步豐富其 AI 模型矩陣。與此同時&#xff0c;通義靈碼也緊跟步伐&#xff0c;全新上線模型選擇功能&#xff0c;支持基于百煉的 DeepSeek-V3 和 D…

vue中附件下載及打印功能

1.附件dom 注&#xff1a;fileList是由后臺返回的附件數組&#xff0c;數組中包含附件名稱fileName,附件地址url&#xff0c;附件id等信息 <el-form-item label"附件" style"width: 100% !important;" v-if"modelTypeborrowDetail"><d…

chromium-mojo

https://chromium.googlesource.com/chromium/src//refs/heads/main/mojo/README.md 相關類&#xff1a;https://zhuanlan.zhihu.com/p/426069459 Core:https://source.chromium.org/chromium/chromium/src//main:mojo/core/README.md;bpv1;bpt0 embedder:https://source.chr…

網絡安全技術復習總結

1|0第一章 概論 1.網絡安全發展階段包括四個階段&#xff1a;通信安全、計算機安全、網絡安全、網絡空間安全。 2.2017年6月1日&#xff0c;我國第一部全面規范網絡空間安全的基礎性法律《中華人民共和國網絡安全法》正式實施。 3.2021年 6月10日&#xff0c;《中華人民共和…

基于華為云鏡像加速器的Docker環境搭建與項目部署指南

基于華為云鏡像加速器的Docker環境搭建與項目部署指南 一、安裝Docker1.1 更新系統包1.2 安裝必要的依賴包1.3 移除原有的Docker倉庫配置(如果存在)1.4 添加華為云Docker倉庫1.5 安裝Docker CE1.6 啟動Docker服務1.7 驗證Docker是否安裝成功1.8 添加華為云鏡像加速器地址二、…