• 牛客网之SQL100题(3)-排序、关联关系


    知识点:

    (1)order by colunm_name(s) ASC|DESC 
    order by ID ASC,name ASC,sex DESC
    不写就是默认升序,DESC降序

    (2)3中关联关系:left join、right join、inner join/join

    21、现在运营想要查看所有来自浙江大学的用户题目回答明细情况,请你取出相应数据

    示例 :question_practice_detail

    iddevice_idquestion_idresult
    12138111wrong
    23214112wrong
    33214113wrong
    46543114right
    52315115right
    62315116right
    72315117wrong

    示例:user_profile

    iddevice_idgenderageuniversitygpaactive_days_within_30question_cntanswer_cnt
    12138male21北京大学3.47212
    23214male复旦大学4.015525
    36543female20北京大学3.212330
    42315female23浙江大学3.6512
    55432male25山东大学3.8201570
    62131male28山东大学3.315713
    74321female26复旦大学3.69652
    1. select a.device_id,
    2. a.question_id,
    3. a.result
    4. from question_practice_detail a
    5. left join user_profile b
    6. on a.device_id = b.device_id
    7. where university = '浙江大学'

    根据示例,你的查询应返回以下结果,查询结果根据question_id升序排序:

    22、运营想要了解每个学校答过题的用户平均答题数量情况,请你取出数据。

    用户信息表 user_profile,其中device_id指终端编号(认为每个用户有唯一的一个终端),gender指性别,age指年龄,university指用户所在的学校,gpa是该用户平均学分绩点,active_days_within_30是30天内的活跃天数。

    device_idgenderageuniversitygpaactive_days_within_30
    2138male21北京大学3.47
    3214maleNULL复旦大学415
    6543female20北京大学3.212
    2315female23浙江大学3.65
    5432male25山东大学3.820
    2131male28山东大学3.315
    4321male28复旦大学3.69

    答题情况明细表 question_practice_detail,其中question_id是题目编号,result是答题结果。

    device_idquestion_idresult
    2138111wrong
    3214112wrong
    3214113wrong
    6543111right
    2315115right
    2315116right
    2315117wrong
    5432118wrong
    5432112wrong
    2131114right
    5432113wrong
    1. --伪代码:
    2. select a.university,
    3. sum(b.question_id)/count( b.device_id) as avg_answer_cnt
    4. from user_profile a
    5. left join question_practice_detail b
    6. on a.device_id = b.device_id
    7. group by university
    8. --不严谨但正确代码:
    9. select a.university,
    10. count(b.question_id)/count(distinct b.device_id) as avg_answer_cnt
    11. from user_profile a
    12. join question_practice_detail b
    13. on a.device_id = b.device_id
    14. group by university
    15. --严谨正确代码:
    16. select a.university,
    17. round(count(b.question_id)/count(distinct b.device_id),4) as avg_answer_cnt
    18. from user_profile a
    19. join question_practice_detail b
    20. on a.device_id = b.device_id
    21. group by a.university
    22. order by a.university
    23. --语法:order by colunm_name(s) ASC|DESC
    24. -- 例:order by ID ASC,name ASC,sex DESC
    25. --不写就是默认升序,DESC降序

    请你写SQL查找每个学校用户的平均答题数目(说明:某学校用户平均答题数量计算方式为该学校用户答题总次数除以答过题的不同用户个数)根据示例,你的查询应返回以下结果(结果保留4位小数),注意:结果按照university升序排序!!!

    universityavg_answer_cnt
    北京大学1.0000
    复旦大学2.0000
    山东大学2.0000
    浙江大学3.0000

  • 相关阅读:
    Android自定义控件(二) Android下聚光灯实现
    Vue项目流程6,登录与注册,完成获取验证码,登录跳转,利用token获取用户信息,退出登录等功能,利用导航守卫在路由跳转之间进行判断
    14、监测数据采集物联网应用开发步骤(10)
    计算机毕业设计springboot+vue基本微信小程序的智慧社区防疫服务系统
    C++(Qt)软件调试---自动注册AeDebug(17)
    基于python的c语言学习笔记(2)
    SpringCloud解决feign调用token丢失问题
    使用Thrift实现跨语言RPC调用
    sklearn包中对于分类问题,如何计算accuracy和roc_auc_score?
    证照之星XE7下载安装详细教程
  • 原文地址:https://blog.csdn.net/weixin_48272780/article/details/127939789