当前位置: 首页 > news >正文

【SQL学习笔记2】深入理解 CASE WHEN 的魔法用法

CASE WHEN 是 SQL 中非常常用的一种条件表达式,它类似于编程语言中的 if-then-else 逻辑。CASE WHEN 可以在查询中用于根据不同的条件返回不同的值,非常适合数据转换、分类统计等场景。

几乎所有的主流 SQL 数据库都支持 CASE WHEN,包括但不限于:

  • MySQL
  • PostgreSQL
  • SQL Server
  • Oracle
  • SQLite
  • BigQuery
  • HiveQL 等 

我们可以从零开始,创建一个简单的数据表,并插入一些示例数据,然后通过 CASE WHEN 进行演练。

目录

第一步:创建表结构(MySQL语法)

第二步:插入测试数据

第三步:使用case when进行查询演练

1.性别转换显示

2.根据年龄分组

3.统计各部门不同薪资水平人数  

4.排序优先级(比如按薪资等级排序)  


第一步:创建表结构(MySQL语法)
CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),gender CHAR(1),age INT,salary DECIMAL(10,2),department VARCHAR(50)
);
  第二步:插入测试数据
INSERT INTO employees (name, gender, age, salary, department) 
VALUES
('张三', 'M', 28, 4500.00, '技术部'),
('李四', 'F', 35, 6000.00, '市场部'),
('王五', 'M', 42, 8000.00, '财务部'),
('赵六', 'F', 25, 3000.00, '技术部'),
('孙七', 'M', 50, 9000.00, '技术部'),
('周八', 'F', 31, 5500.00, '市场部'),
('吴九', 'M', 62, 7000.00, '财务部'),
('郑十', 'F', 29, 4800.00, '市场部');

第三步:使用case when进行查询演练
1.性别转换显示
SELECT name,CASE genderWHEN 'M' THEN '男'WHEN 'F' THEN '女'ELSE '未知'END AS gender_desc
FROM employees;

 

 2.根据年龄分组
SELECT name, age,CASE WHEN age < 30 THEN '青年'WHEN age BETWEEN 30 AND 50 THEN '中年'ELSE '老年'END AS age_group
FROM employees;

3.统计各部门不同薪资水平人数  
SELECT department,COUNT(*) AS total_count,SUM(CASE WHEN salary < 4000 THEN 1 ELSE 0 END) AS low_salary_count,SUM(CASE WHEN salary BETWEEN 4000 AND 7000 THEN 1 ELSE 0 END) AS medium_salary_count,SUM(CASE WHEN salary > 7000 THEN 1 ELSE 0 END) AS high_salary_count
FROM employees
GROUP BY department;
4.排序优先级(比如按薪资等级排序)  
SELECT name, salary,CASE WHEN salary < 4000 THEN 1WHEN salary BETWEEN 4000 AND 7000 THEN 2ELSE 3END AS salary_rank
FROM employees
ORDER BY salary_rank;

 

相关文章:

  • 代理服务器选型与性能对比(Nginx vs Pingora vs Envoy vs HAProxy)
  • STL 3算法
  • 在Jenkins上配置邮箱通知
  • 全网首发!AgentCPM-GUI通过adb操控手机教程
  • JAVA语言的学习(Day_1)
  • 【AAOS】【源码分析】用户管理(四)-- 用户切换
  • Day50打卡 @浙大疏锦行
  • Python环境搭建竞赛指南
  • java--怎么定义枚举类
  • 打卡第41天:训练和测试的规范写法
  • 2005-2021年中国地下水位年鉴数据(EXCEL/PDF)包含:各省监测点、监测深度等
  • 深度学习聊天机器人 需要考虑
  • 深入理解坐标系的变换
  • 基于OpenCV的滑动验证码缺口识别全流程解析(2025企业级方案)
  • 从输入URL到渲染页面的整个过程(浏览器访问URL的完整流程)
  • wordpress后台更新后 前端没变化的解决方法
  • golang -- unsafe 包
  • C++ Programming Language —— 第1章:核心语法
  • C++ 中的尾调用优化TCO:原理、实战与汇编分析
  • Android 中使用 OkHttp 创建多个 Client
  • 美康优选网站怎么做的/网页模版
  • 网站建设制作浩森宇特/搜索引擎大全网址
  • 怎么去掉一页wordpress/百度关键词优化手段
  • 网站首页设计多少钱/石家庄seo排名公司
  • 河北石家庄网站建设/如何让百度快速收录新网站
  • 网站建设肆金手指排名/南宁seo营销推广