题解 | #计算25岁以上和以下的用户数量#

计算25岁以上和以下的用户数量

https://www.nowcoder.com/practice/30f9f470390a4a8a8dd3b8e1f8c7a9fa

CASE函数的使用

CASE 测试表达式
WHEN 简单表达式1 THEN 结果表达式1
WHEN 简单表达式2 THEN 结果表达式2 …
WHEN 简单表达式n THEN 结果表达式n
[ ELSE 结果表达式n+1 ]
END AS 字段别名

方法1:CASE函数

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

SQL执行顺序中select明明在groupby后面,但是这里为什么能用别名age_cut。

原因:因为MySQL对查询做了增强没有严格遵循SQL的执行顺序,where后面不能用select中的别名,但是group by 是可以的,Oracle数据库严格遵循了SQL执行顺序在Oracle里group by是不能引用select里的别名的。Mysql执行顺序应该是 from,where,select,group by,having,order by,limit

方法2:IF函数(三目函数)

select
    if(age < 25 or age is NULL,"25岁以下","25岁及以上")
    as age_cut,
    count(*) number
from
    user_profile
group by
    age_cut

全部评论

相关推荐

字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务