牛客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

;

### SQL题目难度分析 网作为国内知名的在线编程学习平台,提供了丰富的SQL练习题目供用户提升技能[^1]。通过对其题库中的SQL题目进行分类整理可以发现,其难度分布较为广泛,涵盖了基础到高级的多个层次。 #### 初级难度 初级难度主要面向初学者,重点在于掌握基本语法以及简单的单表查询操作。例如,插入记录、更新记录、删除记录等属于此类别下的典型问题[^4]。这类题目通常不涉及复杂的逻辑运算或者多表关联,适合刚刚接触数据库管理系统的学员快速上手。 #### 中级难度 中级阶段则引入了更多实际应用场景下的挑战,比如聚合函数的应用、分组统计等知识点的学习与实践。此时会要求考生能够熟练运用`GROUP BY`, `HAVING` 子句完成数据分析工作;同时也会考察对于日期时间字段的操作能力——这正是引用案例中提到的一个具体实例:运营希望获取关于特定时间段内的活动参与情况报告时需要用到的相关技巧[^2]。 #### 高级难度 进入高阶部分之后,则更加注重综合能力解决复杂业务需求的能力培养。三张甚至更多表格之间的联合检索成为常见考点之一[^3]。另外还包括但不限于窗口函数的理解及其灵活应用等方面的内容介绍。上述例子展示了如何利用JOIN实现跨部门员工信息展示的同时还附加有各自所属科室名称的信息提取过程[^5]。 综上所述可以看出,网上的SQL习题设计合理全面覆盖各个水平段位所需掌握的核心概念技术要点,并且随着等级逐步升高而不断增加新元素进来使得整个体系结构紧凑连贯易于循序渐进地提高个人技术水平。 ```sql -- 示例代码:计算不同学校的各类难度试题平均答题数量 SELECT university, difficult_level, ROUND((COUNT(qpd.question_id) / COUNT(DISTINCT qpd.device_id)), 4) AS avg_answer_cnt FROM question_practice_detail AS qpd LEFT JOIN user_profile AS up ON qpd.device_id = up.device_id LEFT JOIN question_detail AS qd ON qpd.question_id = qd.question_id GROUP BY university, difficult_level; ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值