• MySQL牛客题组练习


    SQL24 :运营想要查看参加了答题的山东大学的用户在不同难度下的平均答题题目数 

     这道题还算有点子复杂,贯穿了三个表的信息,调试了好几次才做出来。

    主要还是涉及到连表查询的都要分析各表之间的共同点(连接点),要能够分离出条件并用合理的关键字过滤,以及分组的依据都要考虑清楚。

    这道题的几个关键词 山东大学 做过题的 不同难度下

    既要是山东大学的学生又要是做过题目的,而表一是所有用户信息表,表二是做了题的所有用户具体他情况表,所以过滤条件是 1中山东大学成员 和 2的用户交集 所以where中的条件是:

    where(t1.university = '山东大学'&& t1.device_id = t2.device_id )

    而从题目:运营想要查看参加了答题的山东大学的用户在不同难度下的平均答题题目数 中可知

    分组条件是题目难度,而用户对应做题的题目编号在表二,题目编号对应的难度情况体现在表三,

    所以要将表二和表三进行连表查询,并以难度为分组条件,所以有:

    1. left join question_detail t3
    2. on t3.question_id=t2.question_id
    group by difficult_level

    完整代码:

    1. select t1.university,t3.difficult_level,(count(t2.question_id)/count(distinct t2.device_id))avg_answer_cnt
    2. from user_profile t1 ,question_practice_detail t2
    3. left join question_detail t3
    4. on t3.question_id=t2.question_id
    5. where(t1.university = '山东大学'&& t1.device_id = t2.device_id )
    6. group by difficult_level;

     


    SLQ25:运营想要分别查看学校为山东大学或者性别为男性的用户的device_id、gender、age和gpa数据,请取出相应结果,结果不去重。

     这道题考察的就是一个union / union all

    完整代码:

    1. select device_id,gender,age,gpa
    2. from user_profile
    3. where university='山东大学'
    4. union all
    5. select device_id,gender,age,gpa
    6. from user_profile
    7. where gender = 'male'

    以后做的SQL题目都往这里写笔记(持续更新...)

     

  • 相关阅读:
    Hugging News #0918: Hub 加入分类整理功能、科普文本生成中的流式传输
    IT项目管理的“金科玉律”是否可信
    QT下跨平台库实现及移植经验分享
    基于Hadoop搭建HA集群网盘系统
    B. The Walkway Codeforces Round 893 (Div. 2)
    207.课程表 | 210.课程表II
    Linux基础命令 逻辑卷扩容
    面试别问我 微服务架构优缺点?
    pytorch笔记:TRIPLETMARGINLOSS
    【漏洞复现】panalog日志审计系统任意用户创建漏洞和后台命令执行
  • 原文地址:https://blog.csdn.net/m0_62742402/article/details/125628137