SQL: 巧妙使用CASE WHEN实现查询

简介: 文章演示了如何利用SQL中的CASE WHEN语句来有效地进行条件性聚合查询,通过具体示例展示了CASE WHEN在统计分析中的应用技巧。

案例

案例:创建表并插入公司名,性别,人数,SQL如下。
要求:统计不同公司,不同性别的员工人数。

DROP TABLE IF EXISTS staff_situation; 
CREATE TABLE staff_situation( 
    company VARCHAR(8), 
    gender VARCHAR(8), 
    num INT 
) 
ENGINE = InnoDB 
DEFAULT CHARSET = utf8; 
INSERT INTO 
staff_situation (company,gender,num) 
VALUE ('A','male',163) 
,('A','female',142) 
,('B','male',98) 
,('B','female',116) 
,('C','male',234) 
,('C','female',196);

方法一: 如果使用多表连接:

SELECT m.company ,
                m.num_male ,
                f.num_female 
FROM ( 
    SELECT company 
                ,SUM(num) AS num_male 
    FROM staff_situation 
    WHERE gender = 'male' 
    GROUP BY company 
) AS m 
INNER JOIN ( 
    SELECT company 
    ,SUM(num) AS num_female 
    FROM staff_situation 
    WHERE gender = 'female' 
    GROUP BY company 
) AS f 
ON m.company = f.company;

方法二:使用CASE WHEN

SELECT company 
 ,SUM(CASE WHEN gender='male' THEN num ELSE 0 END) AS num_male 
 ,SUM(CASE WHEN gender='female' THEN num ELSE 0 END) AS num_female 
FROM staff_situation 
GROUP BY company;

对比发现,使用CASE WHEN可以减少代码的书写量,注意不要忘记写END。

相关文章
|
9天前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
35 9
|
29天前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
104 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
2月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
39 8
|
2月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
64 4
|
2月前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
2月前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
169 10
|
2月前
|
SQL 关系型数据库 MySQL
|
3月前
|
SQL 数据库 开发者
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
|
2月前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
37 0
|
3月前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色