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。

相关文章
|
2天前
|
SQL Java 数据库连接
如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
【10月更文挑战第6天】在代码与逻辑交织的世界中,我从一名数据库新手出发,通过不断探索与实践,最终成为熟练掌握JDBC的开发者。这段旅程充满挑战与惊喜,从建立数据库连接到执行SQL语句,再到理解事务管理和批处理等高级功能,每一步都让我对JDBC有了更深的认识。示例代码展示了如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
14 5
|
2天前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
2天前
|
SQL 移动开发 大数据
SQL语句查询连续六天满足条件的记录
在数据库管理和数据分析中,我们经常需要查询符合特定时间范围内连续几天的记录
|
5天前
|
SQL 数据挖掘 关系型数据库
SQL查询次数大于1的记录:高效技巧与方法
在数据库管理中,经常需要统计某些操作的次数,特别是当需要找出哪些记录或值出现的次数超过一定阈值(如大于1次)时
|
4天前
|
SQL 存储 安全
SQL查询数据库:基础概念与操作指南
在数字化时代,数据库已成为信息管理的重要工具之一。作为管理和操作数据库的核心语言,SQL(结构化查询语言)已成为数据管理和查询的关键技能。本文将全面介绍SQL查询数据库的基本概念、语句和操作指南,以帮助初学者快速上手,同时为进阶用户提供有价值的参考。一、数据库与SQL简介数据库是一种存储、管理和检索
20 3
|
5天前
|
SQL 数据库
SQL查询中排除空值列的技巧与方法
在数据库查询中,经常需要处理包含空值(NULL)的数据列
|
5天前
|
SQL Oracle 关系型数据库
SQL查询默认表空间的技巧与方法
在数据库管理中,表空间是存储数据库对象(如表、索引等)的逻辑空间单元
|
22小时前
|
SQL 监控 关系型数据库
使用SQL语句查询操作耗时的技巧与方法
在数据库管理和优化过程中,了解SQL查询操作的耗时是至关重要的
|
22小时前
|
SQL
创建分组总计查询的SQL技巧与方法
在SQL中,创建分组总计查询(也称为聚合查询)是一项非常基础且重要的技能
|
5天前
|
SQL 存储 数据库
SQL查询100以内数值的技巧与方法
在数据库操作中,经常需要查询特定范围内的数据,比如查询某个数值字段在100以内的记录