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

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

示例:user_profile

iddevice_idgenderageuniversitygpaactive_days_within_30question_cntanswer_cnt
12138male21北京大学3.47212
23214male复旦大学415525
36543female20北京大学3.212330
42315female23浙江大学3.6512
55432male25山东大学3.8201570
62131male28山东大学3.315713
74321male26复旦大学3.69652

难点,这个25岁以上,以下 这个字段的value是怎么设置的?

错误1:

select

age as age_cut='25岁以上' ,count(device_id) as number

from user_profile

where age<25 or age is null 

union all

select

age as age_cut='25岁及以上',count(device_id)as number

from user_profile

where age>=25;

怎么设置一个新的values?

select

'25岁以下' as avg_cut , count(device_id) as number

from user_profile

where age<25 or age is null 

union all

select

'25岁及以上' as avg_cut, count(device_id)as number

from user_profile

where age>=25;

第二种解答:case when 完成筛选,对每行设计标签,然后group by进行筛选

select

case when  age <25 or age is null then '25岁以下'

       when age >= 25 then '25岁及以上'

        end age_cnt,

count(device_id) as number

from

    user_profile

group by

    age_cnt;

表达式"age_cnt"被用作CASE语句的结果的别名。

CASE语句用于在SQL查询中创建条件逻辑。它根据"age"列的值进行评估,并根据条件为每行分配相应的标签。在这个语句中,"age_cnt"是根据"age"的值分类的结果的别名。

### 方法3

### 使用 if(条件,输出情况1,输出情况2) 完成数据的判断 

select 

    if (age >= 25'25岁及以上','25岁以下') as age_cut, 

    count(device_id) as number 

from 

    user_profile

group by 

    age_cut

;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值