SQL 中 CASE WHEN 及 SELECT CASE WHEN 的用法

SQL 中 CASE WHEN 及 SELECT CASE WHEN 的用法

CASE WHEN 是 SQL 中非常實用的條件表達式,它允許你在查詢中實現條件邏輯。以下是詳細的用法說明:

1. 基本語法結構

CASE WHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE default_result
END

或者簡單形式:

CASE expression WHEN value1 THEN result1WHEN value2 THEN result2...ELSE default_result
END

2. 在 SELECT 語句中的用法

示例1:簡單條件判斷

SELECT employee_name,salary,CASE WHEN salary > 10000 THEN '高薪'WHEN salary > 5000 THEN '中等'ELSE '一般'END AS salary_level
FROM employees;

示例2:等值比較(簡單形式)

SELECT product_name,CASE category_idWHEN 1 THEN '電子產品'WHEN 2 THEN '服裝'WHEN 3 THEN '食品'ELSE '其他'END AS category_name
FROM products;

3. 在 UPDATE 語句中的用法

UPDATE orders
SET discount = CASE WHEN order_amount > 1000 THEN 0.1WHEN order_amount > 500 THEN 0.05ELSE 0END;

4. 在 ORDER BY 中的用法

SELECT * FROM customers
ORDER BY CASE WHEN country = 'China' THEN 1WHEN country = 'USA' THEN 2ELSE 3END;

5. 在 GROUP BY 中的用法

SELECT CASE WHEN age < 20 THEN '青少年'WHEN age BETWEEN 20 AND 30 THEN '青年'ELSE '成年'END AS age_group,COUNT(*) AS count
FROM users
GROUP BY age_group;

6. 嵌套 CASE WHEN 用法

SELECT student_name,score,CASE WHEN score >= 90 THEN 'A'WHEN score >= 80 THEN CASE WHEN attendance_rate > 0.9 THEN 'B+'ELSE 'B'ENDWHEN score >= 70 THEN 'C'ELSE 'D'END AS grade
FROM students;

7. 在聚合函數中使用

SELECT department_id,SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count
FROM employees
GROUP BY department_id;

注意事項

  1. CASE WHEN 會按順序判斷條件,第一個滿足的條件會被執行,后面的條件將被忽略
  2. 如果沒有條件滿足且沒有 ELSE 子句,結果將為 NULL
  3. 所有 THEN 子句返回的數據類型應該兼容
  4. 在復雜的 CASE 表達式中,適當使用括號可以提高可讀性

CASE WHEN 是 SQL 中非常強大的條件表達式,掌握它可以讓你寫出更加靈活和強大的查詢語句。

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

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

相關文章

CentOS 7 Linux 基礎知識點匯總

&#x1f427; CentOS 7 Linux 基礎知識點匯總為方便初學者快速掌握 CentOS 7 系統的核心操作&#xff0c;本文檔整理了常用系統命令、快捷鍵、目錄結構及文件后綴名等基礎內容&#xff0c;適合入門參考。 一、常見系統命令 &#x1f50d; 命令行提示符說明 終端中的提示符包含…

突發限制下的破局之路:國產之光 Lynx 重構 AI 開發安全壁壘

繼 Pro 套餐 “明升暗降” 爭議后&#xff0c;Cursor 本周再掀波瀾 —— 包括 Claude 系列、GPT-4 在內的主流模型一夜之間對中國用戶全面封禁。開發者社群瞬間沸騰&#xff0c;“付費卻用不了”“項目數據導不出” 的焦慮刷屏&#xff0c;境外工具的政策波動再次給行業敲響警鐘…

滲透測試實戰 | docker復雜環境下的內網打點

本文作者&#xff1a;Track-syst1m一.前言本文涉及的相關漏洞均已修復、本文中技術和方法僅用于教育目的&#xff1b;文中討論的所有案例和技術均旨在幫助讀者更好地理解相關安全問題&#xff0c;并采取適當的防護措施來保護自身系統免受攻擊。二.大概流程1. 外網打點漏洞利用?…

阿里云服務器 CentOS 7 安裝 MySQL 8.4 超詳細指南

阿里云服務器 CentOS 7 安裝 MySQL 8.4 超詳細指南 一、準備工作 系統要求&#xff1a; CentOS 7.9 64位2 核&#xff08;vCPU&#xff09;2 GiBroot 用戶權限 服務器連接工具&#xff1a; FinalShell 下載安裝包&#xff1a; 訪問 MySQL 官網選擇版本&#xff1a;MySQL 8.4.0…

解決 Electron 中 window.open 打開新窗口的各種“坑”

嘿&#xff0c;各位開發者們&#xff01;今天我們要聊聊在使用 Electron 時遇到的一個經典問題&#xff1a;如何正確地使用 window.open 來打開新窗口&#xff1f; 這聽起來似乎很簡單&#xff0c;但實際上卻充滿了各種“驚喜”&#xff08;或者說“驚嚇”&#xff09;。別擔心…

朝歌智慧盤古信息:以IMS MOM V6重構國產化智能終端新生態

隨著5G、云計算、AI、大數據等技術深度滲透&#xff0c;智能終端行業正迎來場景化創新的爆發期。面對市場需求升級與技術迭代壓力&#xff0c;國產化智能終端領域領軍企業——廣東朝歌智慧互聯科技有限公司&#xff08;以下簡稱“朝歌智慧”&#xff09;&#xff0c;基于集團“…

docker 離線安裝postgres+postgis實踐

文章目錄前言一、離線安裝docker二、導出導入PG鏡像1.導出2.導入三、啟動容器四、驗證與測試前言 在企業內網環境中部署地理信息系統&#xff08;GIS&#xff09;時&#xff0c;常常面臨網絡隔離導致無法在線拉取 Docker 鏡像的問題。 本文將詳細介紹如何通過離線方式完成 Pos…

視頻、音頻錄制

1&#xff0c;項目介紹。 實現全屏錄屏、選擇區域錄屏、攝像頭錄像、麥克風錄音、主板音頻錄音、截屏畫板的自由組合。并通過FFmpeg完成音頻與視頻的合并。 功能界面 畫板畫筆 參考的項目 https://github.com/yangjinming1062/RecordWin 本項目是在此項目的基礎上修復了部…

Linux文件系統理解1

目錄一、初步理解系統層面的文件1. 文件操作的本質2. 進程管理文件核心思想二、系統調用層1. 打開關閉文件函數2. 讀寫文件函數三、操作系統文件管理1. 文件管理機制2. 硬件管理機制四、理解重定向1. 文件描述符分配規則2. 重定向系統調用3. 重定向命令行調用五、理解緩沖區1. …

科技向善,銀發向暖:智慧養老與經濟共筑適老未來

人口老齡化是當今中國社會面臨的重大課題&#xff0c;也是推動社會變革與經濟轉型的重要引擎。隨著數字技術的飛速發展&#xff0c;“智慧養老”正以科技向善的溫度&#xff0c;為老年群體構建更舒適、更安全、更有尊嚴的晚年生活&#xff0c;同時為銀發經濟注入蓬勃活力&#…

numpy庫 降維,矩陣創建與元素的選取,修改

目錄 1.降維函數ravel()和flatten ravel(): flatten(): 2.矩陣存儲與內存結構 3.修改矩陣形狀的方法 4.特殊矩陣創建 全零矩陣: 如np.zeros(5) 創建含5個零的一維數組&#xff0c;輸出中零后的點&#xff08;如 0.&#xff09;表示浮點數類型。 全一矩陣&#xff1a;如n…

SpringCloud seata全局事務

項目https://github.com/apache/incubator-seata docker拉取啟動server $ docker run --name seata-server -p 8091:8091 apache/seata-server:2.1.0 seata注冊到nacos <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-…

OpenLayers 快速入門(八)事件系統

看過的知識不等于學會。唯有用心總結、系統記錄&#xff0c;并通過溫故知新反復實踐&#xff0c;才能真正掌握一二 作為一名摸爬滾打三年的前端開發&#xff0c;開源社區給了我飯碗&#xff0c;我也將所學的知識體系回饋給大家&#xff0c;助你少走彎路&#xff01; OpenLayers…

【Linux | 網絡】應用層(HTTPS)

目錄一、HTTPS的概念二、準備概念2.1 什么是加密和解密2.2 為什么要加密2.3 常見的加密方式2.3.1 對稱加密2.3.1 非對稱加密2.4 數據摘要&&數據指紋三、HTTPS理解過程3.1 只使用對稱加密3.2 只使用非對稱加密3.3 雙方都使用非對稱加密3.4 對稱加密 非對稱加密3.5 中間…

GRE協議

一、實驗拓撲二、實驗配置1、靜態路由實現GRERT1配置&#xff1a;RT1(config)# int fa1/0RT1(config-if)# ip add 192.168.20.1 255.255.255.0RT1(config-if)# no shutdownRT1(config)# int fa0/0RT1(config-if)# ip add 172.1.1.2 255.255.255.0RT1(config-if)# no shutdownRT…

JDialong彈窗

public class DialogDemo extends JFrame {public DialogDemo(){this.setVisible(true);this.setSize(700,500);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//JFrame 放東西&#xff0c;容器Container contentPane this.getContentPane();//絕對布局conte…

tlias智能學習輔助系統--違紀處理(實戰)

目錄 1.StudentController.java 2.interface StudentService 3.StudentServiceImpl.java 4.interface StudentMapper 1.StudentController.java // 違紀處理PutMapping("/violation/{id}/{score}")Operation(summary "違紀處理")public Result violat…

傳統RNN模型筆記:輸入數據長度變化的結構解析

一、案例背景 本案例通過PyTorch的nn.RNN構建單隱藏層RNN模型&#xff0c;重點展示RNN對變長序列數據的處理能力&#xff08;序列長度從1變為20&#xff09;&#xff0c;幫助理解RNN的輸入輸出邏輯。 二、核心代碼與結構拆解 def dm_rnn_for_sequencelen():# 1. 定義RNN模型rnn…

OpenLayers 快速入門(四)View 對象

看過的知識不等于學會。唯有用心總結、系統記錄&#xff0c;并通過溫故知新反復實踐&#xff0c;才能真正掌握一二 作為一名摸爬滾打三年的前端開發&#xff0c;開源社區給了我飯碗&#xff0c;我也將所學的知識體系回饋給大家&#xff0c;助你少走彎路&#xff01; OpenLayers…

測試左移方法論

測試左移&#xff08;Shift-Left Testing&#xff09;?是一種軟件測試方法論&#xff0c;核心思想是將測試活動從傳統的開發后期&#xff08;如系統測試、驗收測試階段&#xff09;提前到軟件生命周期的更早期階段&#xff08;如需求分析、設計、編碼階段&#xff09;&#xf…