• 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题目都往这里写笔记(持续更新...)

     

  • 相关阅读:
    不容错过的用户标签全面解读。建议收藏!
    ES的常用查询
    UI设计师的工作职责 优漫动游
    C#操作INI文件
    记一次高校学生账户的“从无到有”
    快充插线板怎么选?我的办公搭子是它!
    Linux环境及Linux命令
    AQS:Java 中悲观锁的底层实现机制
    【我的OpenGL学习进阶之旅】着色器GLSL运行时报错 GLSL compile error: Premature end of line
    【CV】各种库安装报错及解决办法
  • 原文地址:https://blog.csdn.net/m0_62742402/article/details/125628137