MySQL必会的常用函数---条件函数

题目1:计算25岁以上和以下的用户数量
image

image

问题分解:

  • 运营团队希望将用户按照年龄划分为两个年龄段:25岁以下和25岁及以上。

  • 需要统计每个年龄段的用户数量。需要注意的是,年龄(age)为 NULL 的用户也应被归类为25岁以下。

CASE函数:

是一种多分支的函数,可以根据条件列表的值返回多个可能的结果表达式中的一个。

可用在任何允许使用表达式的地方,但不能单独作为一个语句执行。

分为:简单CASE函数和搜索CASE函数

  • 简单CASE函数
    CASE 测试表达式
    WHEN 简单表达式1 THEN 结果表达式1
    WHEN 简单表达式2 THEN 结果表达式2 …
    WHEN 简单表达式n THEN 结果表达式n
    [ ELSE 结果表达式n+1 ]
    END
  • 搜索CASE函数
    CASE
    WHEN 布尔表达式1 THEN 结果表达式1
    WHEN 布尔表达式2 THEN 结果表达式2 …
    WHEN 布尔表达式n THEN 结果表达式n
    [ ELSE 结果表达式n+1 ]
    END

示例代码:

    select 
    case
    when age<25 or age is null then '25岁以下'
    when age>=25 then '25岁及以上'
    end as age_cut,count(*) as number
    from user_profile
    group by age_cut

代码分析:

    SELECT 子句:

    使用 CASE WHEN 语句来判断 age 字段:
    如果 age 小于25岁或为 NULL,则将其归类为 '25岁以下'。
    否则,归类为 '25岁及以上'。

    为划分后的结果命名为 age_cut。

    使用 COUNT(*) 统计每个年龄段的用户数量,并命名为 number。

    FROM 子句:
    指定数据来源为 user_profile 表。
   
    GROUP BY 子句:
    按照划分后的 age_cut 进行分组,以便统计每个组的用户数量。

题目2:查看不同年龄段的用户明细

image

image

问题分解:

  • 运营团队希望将用户按照年龄划分为三个年龄段:20岁以下、20-24岁、25岁及以上,并分别查看不同年龄段用户的明细情况。

  • 需要从 user_profile 表中取出相应的数据。需要注意的是,若年龄为空,请返回其他。

示例代码:

    select device_id,gender,
    case
    when age is null then '其他'
    when age<20 then '20岁以下'
    when (age>=20 and age<=24) then '20-24岁'
    when age>=25 then '25岁及以上'
    end as age_cut
    from user_profile
posted @ 2026-03-04 11:54  桃桃不淘1  阅读(3)  评论(0)    收藏  举报