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

     

  • 相关阅读:
    SpringCloud微服务之SpringCloud Gateway实现服务网关
    [字符串和内存函数]strcmp和strncmp以及memcmp的区别
    奔驰E Coupe 升级鼠标按键 操作简单 完美结合
    分布式锁选型+缓存db一致性
    MySQL 8.0:无锁可扩展的 WAL 设计
    【LeetCode刷题(数据结构)】:对称二叉树
    微软远程桌面服务远程代码执行漏洞
    SQL 注入复习总结
    Elasticsearch:什么是大语言模型 (LLMs)?
    python如何利用算法解决业务上的【分单问题】
  • 原文地址:https://blog.csdn.net/m0_62742402/article/details/125628137