多表查询链接查询 SQL22统计每个学校的答过题的用户的平均答题数

简介: 多表查询链接查询 SQL22统计每个学校的答过题的用户的平均答题数

一、多表查询

1、链接查询

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

描述

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

2030b9106d4fedf2c4301565556dc93.png

be7fef7ae0bb29a1f5cdf00d5be78f9.png

eccd84d5e3f4891b70dc9724adad9cb.png

示例1

输入:

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_idint 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

0797fd539fc4fae861bb06510a01746.png

1.1.1、SQL语句(第一种写法)

select
  u.university,
  round(
    (count(q.device_id) / count(distinct(q.device_id))),
    4
  ) avg_answer_cnt
from
  user_profile u,
  question_practice_detail q
where
  u.device_id = q.device_id
group by
  university
order by
  university asc

3410eab1f5f4f1cfea31483f7a232cb.png

1.1.2、SQL语句(第二种写法)

select
  u.university,
  round(
    (count(q.device_id) / count(distinct(q.device_id))),
    4
  ) avg_answer_cnt
from
  user_profile u
  join
  question_practice_detail q
on
  u.device_id = q.device_id
group by
  university
order by
  university asc
相关文章
|
8天前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
33 9
|
28天前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
102 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
2月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
39 8
|
2月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
63 4
|
2月前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
2月前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
167 10
|
2月前
|
SQL 关系型数据库 MySQL
|
3月前
|
SQL 数据库 开发者
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
|
2月前
|
SQL
开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql
开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql
35 1
|
2月前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
36 0