COUNT(CASE WHEN ... THEN ... END)详解

在 SQL 查询中,COUNT(CASE WHEN ... THEN ... END) 是一种常见的用法,用于统计满足特定条件的记录数。具体例子:

# sexType = '2'表示女生
COUNT(CASE WHEN h_employee.sexType = '2' THEN 1 END) AS 女员工人数

解释

  1. CASE WHEN ... THEN ... END

    • 这是一个条件表达式,用于根据条件返回不同的值。
    • h_employee.sexType = '2' 为真时,返回 1;否则返回 NULL
  2. COUNT()

    • COUNT() 函数用于统计非 NULL 值的数量。
    • 由于 CASE WHEN 在条件不满足时返回 NULL,因此 COUNT() 只会统计满足条件的记录数。
  3. AS 女员工人数

    • 这是为计算结果指定一个别名,方便在查询结果中引用。

作用

这段代码的作用是统计 h_employee 表中 sexType'2' 的记录数,即统计女性员工的数量。

示例

假设 h_employee 表的结构和数据如下:

employee_idnamesexType
1Alice2
2Bob1
3Carol2
4David1
5Eve2

执行以下查询:

SELECT 
    COUNT(CASE WHEN h_employee.sexType = '2' THEN 1 END) AS 女员工人数
FROM 
    h_employee;

结果:

女员工人数
3

注意事项

  1. CASE WHEN 的返回值

    • 如果 CASE WHEN 的条件不满足,返回 NULLCOUNT() 会忽略 NULL 值。
    • 因此,只有 sexType = '2' 的记录会被统计。
  2. COUNT(1)COUNT(*) 的区别

    • COUNT(1)COUNT(*) 都会统计所有行,但 COUNT(CASE WHEN ... THEN 1 END) 只统计满足条件的行。
  3. 性能

    • 这种写法在统计特定条件的记录数时非常高效,因为它只需要扫描一次表。

其他写法

你也可以使用 SUM() 实现相同的功能:

SUM(CASE WHEN h_employee.sexType = '2' THEN 1 ELSE 0 END) AS 女员工人数

这种写法的逻辑是:

  • sexType = '2' 时,返回 1,否则返回 0
  • SUM() 会将这些值相加,得到满足条件的记录数。

总结

  • COUNT(CASE WHEN ... THEN 1 END) 是一种灵活且高效的方式,用于统计满足特定条件的记录数。
  • 在你的例子中,它用于统计 h_employee 表中女性员工的数量。
  • 也可以使用 SUM(CASE WHEN ... THEN 1 ELSE 0 END) 实现相同的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clownAdam

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值