• 牛客网之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

  • 相关阅读:
    Qt的定时器QTimer
    (Java版)大小写转换设计一个程序, 输入一行字符串, 将其中大写转为小写, 小写转为大写. 其余字符不变
    【rust】7、命令行程序实战:std::env、clap 库命令行解析、anyhow 错误库、indicatif 进度条库
    [JAVAee]Spring MVC
    【亚马逊云科技产品测评】活动征文|亚马逊云科技AWS之EC2详细测评
    【PG】PostgreSQL单机部署(简洁命令版)
    设计模式-享元模式Flyweight(结构型)
    WinRAR如何保护压缩包的文件不被修改
    利用三次样条插值调整鱼眼扭曲程度
    中小学教师资格考试介绍
  • 原文地址:https://blog.csdn.net/weixin_48272780/article/details/127939789