Sql多表查询

1、子查询

浙江大学用户题目回答情况

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

select
    qpd.device_id,
    qpd.question_id,
    qpd.result
from
    question_practice_detail as qpd
    inner join user_profile as up on up.device_id = qpd.device_id
    and up.university = '浙江大学'
order by
    question_id
select
    device_id,
    question_id,
    result
from
    question_practice_detail
where
    device_id in (
        select
            device_id
        from
            user_profile
        where
            university = '浙江大学'
    )
order by
    question_id

2、链接查询

统计每个学校的答过题的用户的平均答题数

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

select
    university,
    count(question_id) / count(distinct qpd.device_id) as avg_answer_cnt
from
    question_practice_detail as qpd
    inner join user_profile as up on qpd.device_id = up.device_id
group by
    university

统计每个学校各难度的用户平均刷题数

运营想要计算一些参加了答题的不同学校、不同难度的用户平均答题量,请你写SQL取出相应数据。

//每个学校:按学校分组group by university
//不同难度:按难度分组group by difficult_level
//平均答题数:总答题数除以总人数count(qpd.question_id) / //count(distinct qpd.device_id)
//来自上面信息三个表,需要联表,up与qpd用device_id连接,
//qd与qpd用question_id连接。
//平均值精度:保留4位小数round(x, 4)
select
    university,
    difficult_level,
    round(
        count(qpd.question_id) / count(distinct qpd.device_id),
        4
    ) as avg_answer_cnt
from
    question_practice_detail as qpd
    left join user_profile as up on up.device_id = qpd.device_id
    left join question_detail as qd on qd.question_id = qpd.question_id
group by
    university,
    difficult_level

统计每个用户的平均刷题数

运营想要查看参加了答题的山东大学的用户在不同难度下的平均答题题目数,请取出相应数据。

SELECT
    t1.university,
    t3.difficult_level,
    COUNT(t2.question_id) / COUNT(DISTINCT (t2.device_id)) as avg_answer_cnt
from
    user_profile as t1,
    question_practice_detail as t2,
    question_detail as t3
WHERE
    t1.university = '山东大学'
    and t1.device_id = t2.device_id
    and t2.question_id = t3.question_id
GROUP BY
    t3.difficult_level;

3、组合查询

查找山东大学或者性别为男生的信息

现在运营想要分别查看学校为山东大学或者性别为男性的用户的device_id、gender、age和gpa数据,请取出相应结果,结果不去重。

select
    device_id,
    gender,
    age,
    gpa
from
    user_profile
where
    university = '山东大学'
union all
select
    device_id,
    gender,
    age,
    gpa
from
    user_profile
where
    gender = 'male'

相关推荐

  1. Sql查询

    2024-04-24 23:24:04       11 阅读
  2. SQL查询

    2024-04-24 23:24:04       8 阅读
  3. sql server查询

    2024-04-24 23:24:04       39 阅读
  4. SQL进阶:查询

    2024-04-24 23:24:04       40 阅读
  5. SQL/关联查询--JOIN语句

    2024-04-24 23:24:04       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-24 23:24:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-24 23:24:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-24 23:24:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-24 23:24:04       20 阅读

热门阅读

  1. 消息队列的简介

    2024-04-24 23:24:04       12 阅读
  2. 解耦、异步、削峰是什么

    2024-04-24 23:24:04       12 阅读
  3. 前端 -- if-else嵌套地狱

    2024-04-24 23:24:04       13 阅读
  4. class090 贪心经典题目专题2【左程云算法】

    2024-04-24 23:24:04       12 阅读
  5. 最短路问题之Dijkstra算法 洛谷 单源最短路径

    2024-04-24 23:24:04       12 阅读
  6. 上海计算机学会4月月赛 丙组题解

    2024-04-24 23:24:04       14 阅读
  7. MySQL的MVCC机制

    2024-04-24 23:24:04       14 阅读
  8. Spring boot + MyBatis-Plus3

    2024-04-24 23:24:04       10 阅读
  9. MongoDB应用:forEach方法实际应用

    2024-04-24 23:24:04       12 阅读