• SQL 基础篇 SQL 22 统计每个学校的答过题的用户的平均答题数


    SQL基础篇(汇总)刷题传送门

    题目链接


    题面

     

    样例输入

    drop table if exists `user_profile`;
    drop table if  exists `question_practice_detail`;
    CREATE TABLE `user_profile` (
    `device_id` int NOT NULL,
    `gender` varchar(14) NOT NULL,
    `age` int ,
    `university` varchar(32) NOT NULL,
    `gpa` float,
    `active_days_within_30` int
    );
    CREATE TABLE `question_practice_detail` (
    `device_id` int NOT NULL,
    `question_id`int NOT NULL,
    `result` varchar(32) NOT NULL
    );

    INSERT INTO user_profile VALUES(2138,'male',21,'北京大学',3.4,7);
    INSERT INTO user_profile VALUES(3214,'male',null,'复旦大学',4.0,15);
    INSERT INTO user_profile VALUES(6543,'female',20,'北京大学',3.2,12);
    INSERT INTO user_profile VALUES(2315,'female',23,'浙江大学',3.6,5);
    INSERT INTO user_profile VALUES(5432,'male',25,'山东大学',3.8,20);
    INSERT INTO user_profile VALUES(2131,'male',28,'山东大学',3.3,15);
    INSERT INTO user_profile VALUES(4321,'male',28,'复旦大学',3.6,9);
    INSERT INTO question_practice_detail VALUES(2138,111,'wrong');
    INSERT INTO question_practice_detail VALUES(3214,112,'wrong');
    INSERT INTO question_practice_detail VALUES(3214,113,'wrong');
    INSERT INTO question_practice_detail VALUES(6543,111,'right');
    INSERT INTO question_practice_detail VALUES(2315,115,'right');
    INSERT INTO question_practice_detail VALUES(2315,116,'right');
    INSERT INTO question_practice_detail VALUES(2315,117,'wrong');
    INSERT INTO question_practice_detail VALUES(5432,118,'wrong');
    INSERT INTO question_practice_detail VALUES(5432,112,'wrong');
    INSERT INTO question_practice_detail VALUES(2131,114,'right');
    INSERT INTO question_practice_detail VALUES(5432,113,'wrong');

    样例输出

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

    题意理解

    我们将两个表通过device_id 连接起来 而且这个id是唯一的

    通过对大学的分组然后 答题表的问题总数 除以 这个device_id 的去重之后的总个数

    因为一个人可能答了不止一次 最后记得出来是数字要保留四位

    代码 

    1. select user_profile.university,
    2. round(count(question_practice_detail.question_id)/count(distinct question_practice_detail.device_id),4)
    3. as avg_answer_cnt
    4. from user_profile join question_practice_detail
    5. on user_profile.device_id=question_practice_detail.device_id
    6. group by user_profile.university

  • 相关阅读:
    【uniapp】uniapp开发app在线预览pdf文件
    单元测试框架-Pytest(简单学习)
    阿里云云主机免费试用三个月
    【C语言从0到1之数据类型】
    three.js(二):webpack + three.js + ts
    LeetCode --- 1496. Path Crossing 解题报告
    呼声与现实:WPS Office 64位版何时到来?
    qmake.exe xxx.pro -spec win32-g++ 作用
    JVM后端编译与优化——编译器优化技术
    基于gstreamer的rtsp推流 (USB摄像头)
  • 原文地址:https://blog.csdn.net/NHS6671/article/details/124975291