牛客题霸sql入门篇之多表查询

news2024/11/23 8:16:38

牛客题霸sql入门篇之多表查询

1 子查询

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

1.1.1 题目内容

a 内容1

在这里插入图片描述

b 内容2

在这里插入图片描述

1.1.2 示例代码

SELECT device_id,question_id,result
FROM question_practice_detail
WHERE device_id=(SELECT device_id FROM user_profile WHERE university='浙江大学' );

1.1.3 运行结果

在这里插入图片描述

1.1.4 考察知识点

如果一个表需要通过另外一个表筛选出来的结果
就可以考虑子查询了

2 链接查询

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

2.1.1 题目内容

a 内容1

在这里插入图片描述

b 内容2

在这里插入图片描述

c 内容3

在这里插入图片描述

2.1.2 示例代码

SELECT u.university university,count(u.device_id)/count(distinct u.device_id) avg_answer_cnt
FROM user_profile u
INNER JOIN question_practice_detail q
ON u.device_id=q.device_id
GROUP BY u.university
ORDER BY u.university

2.1.3 运行结果

在这里插入图片描述

2.1.4 考察知识点

看到每个、各这种类似的词语,代表需要使用group by分组关键字
分组中的平均数量可以有优先考虑count(字段)/count(distinct 字段),再去考虑avg函数
另外这个字段如果多张表都存在且是多表联查,一定要指明一个表,像表别名.字段才是正解

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

2.2.1 题目内容

a 内容1

在这里插入图片描述

b 内容2

在这里插入图片描述

c 内容3

在这里插入图片描述

d 内容4

在这里插入图片描述

2.2.2 示例代码

SELECT u.university university,q2.difficult_level difficult_level,count(u.device_id)/count(distinct u.device_id) avg_answer_cnt
FROM user_profile u
INNER JOIN  question_practice_detail q1
ON u.device_id=q1.device_id
INNER JOIN question_detail q2
ON q1.question_id=q2.question_id
GROUP BY u.university,q2.difficult_level

2.2.3 运行结果

在这里插入图片描述

2.2.4 考察知识点

多表联查后得到的新表和普通表具有一样的功能,都能使用分组 分组筛选、过滤、排序功能
但是需要注意是的是使用时最好才有表别名.字段名这种写法,这样可以提高代码的可读性

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

2.3.1 题目内容

a 内容1

在这里插入图片描述

b 内容2

在这里插入图片描述

c 内容3

在这里插入图片描述

d 内容4

在这里插入图片描述

2.3.2 示例代码

SELECT u.university university,q2.difficult_level difficult_level,
count(u.device_id)/count(distinct u.device_id) avg_answer_cnt
FROM user_profile u
INNER JOIN question_practice_detail q1
ON u.device_id=q1.device_id
INNER JOIN question_detail q2
ON q1.question_id=q2.question_id
GROUP BY u.university,q2.difficult_level
HAVING u.university='山东大学'

2.3.3 运行结果

在这里插入图片描述

2.3.4 考察知识点

① 如果有分组和特定条件,先筛选后分组和先分组后筛选都可以,哪种熟悉就用哪种
若筛选完之后发现有个键是取不到的,如山东大学,那就直接对唯一的值
进行一次排序就行,聚合键是一定可以拿到的
② 如果()里面的值不写别名,默认的字段名就是查询时原表的字段名
③想用括号里面的表 需要再后面写上表别名,通过别名.字段名去调用
以下是本题的另外一种写法
SELECT u.university university,q2.difficult_level difficult_level,
count(u.device_id)/count(distinct u.device_id) avg_answer_cnt
FROM (SELECT * FROM user_profile WHERE university='山东大学') u
INNER JOIN question_practice_detail q1
ON u.device_id=q1.device_id
INNER JOIN question_detail q2
ON q1.question_id=q2.question_id
GROUP BY u.university,q2.difficult_level

3 组合查询

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

3.1.1 题目内容

在这里插入图片描述

3.1.2 示例代码

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'

3.1.3 运行结果

在这里插入图片描述

3.1.4 考察知识点

union all 表示两种查询结果的并集且不去除重复行
如果是单union 就代表是去除重复行
union要求两者的字段个数、字段类型完全一致才可以进行拼接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计Python的个人理财系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

pyqt 搭建深度学习训练界面(二)

炼丹软件 github链接: 有需要联系我 requirements: 测试在ubuntu18.04和Windows均可运行 ubuntu18.04 OS: Ubuntu 18.04.6 LTS Python version: 3.7 (64-bit runtime) Is CUDA available: True CUDA runtime version: 11.1.74 GPU models and configuration: GPU 0: NVI…

基于云的文档管理软件/文档管理系统(DMS)

基于云的文档管理软件 由于违反法规而导致的安全漏洞、数据丢失、版本管理等难题和诉讼已经变得非常普遍,以至于这一切都感觉像是“正常”的现象。使用文档管理系统,可以让您避免这些麻烦。安全标准的执行、信息的合规性和维护都在控制之中,只…

【人脸识别】SVM和PCA人脸识别【含GUI Matlab源码 369期】

⛄一、简介 1 PCA-SVM原理 1.1 主成分分析PCA 本文处理的所有原始图片都是112x 92大小的pgm格式图片, 每幅图片包含10304个像素点, 每一行代表一个样本,维数就是10304维。维数过大使得数据处理工作十分复杂,同时,图片…

axios传参的语法

请求方式 POST 向服务器新增数据 GET 从服务器获取数据 DELETE 删除服务器上的数据 PUT 更新服务器上的数据(侧重于完整更新:例如更新用户的完整信息) PATCH 更新服务器上的数据(侧重于部分更新:例如只更新用户的手机号 ) get axios({url: 请求地址,m…

制作自已的屏保动态

制作自已的屏保动态我的环境第一步:编写自己的屏保程序1、代码准备2、编译第二步:有了可运行程序,使用RAR压缩工具将资源和程序打包成独立可执行exe第三步:将dist.exe配置成系统屏幕保护参考我的环境 win10 python3.X pycharm 第…

Linux学习08-认识与学习BASH

1 认识BASH 我们必须要通过Shell将我们输入的命令与内核沟通,好让内核可以控制硬件来正确无误地工作。 Bash shell的功能 历史命令:命令行按“上下键”就可以找到前/后一个输入的指令。 命令与文件补全功能: [Tab] 接在一串指令的第一个…

大学生学习网站哪里找?收好这15个网站

1.学堂在线 地址:https://www.xuetangx.com/ 这里面的课程都是精选,以北大清华为首的高校汇聚于此 2.中国大学生MOOC 地址:https://www.icourse163.org/ 不多说都是精品 3.网易公开课 地址:https://open.163.com/ 网易公开课汇集清华、北大、哈佛、耶鲁等世界名…

全景分割~

Hinton组提出基于大型全景掩码的实例分割框架,图像视频场景丝滑切换 全景分割是一项基本的视觉任务,该任务旨在为图像的每个像素指定语义标签和实例标签。语义标签描述每个像素的类别(例如天空、竖直物体等),实例标签…

408 | 考前知识拾遗

计网 二、物理层 各种编码图像 数据交换方式——怎么算时间 VLAN每个VLAN都是一个广播域 三、数据链路层 差错控制:检错、纠错 停等、GBN、SR差别 随机访问 VLAN的考点 交换机:转发、自学习 四、网错层 路由协议/算法 ☆☆☆IPV4分组 1、网关配置、路由…

JVM——常量池

目录一、常量池二、运行时常量池三、intern方法 1.8四、intern方法 1.6五、StringTable 垃圾回收六、StringTable调优通过解决以下问题可以更深入了解字符串创建过程中的原理 一、常量池 二进制字节码的组成:类的基本信息、常量池、类的方法定义(包含…

集合的框架体系和Collection接口

1.集合的理解和好处 前面我们保存多个数据使用的是数组,那么数组有不足的地方,我们分析一下 1.1数组 1)长度开始时必须指定,而且一旦指定,不能更改 2)保存的必须为同一类型的元素 3)使用数组进行增加/删除元素的示例代码-比较麻烦…

调试3D渲染和3D可视化的五个好处

建筑和建筑环境是我们日常生活中不可避免的一部分,直接影响我们和我们的福祉。它可以是我们的家、办公室、附近的教堂或城市的商业综合体;所有这一切的设计和规划都是建筑。然而,具有讽刺意味的是,建筑的交流往往并不具有包容性。例如&#x…

玩以太坊链上项目的必备技能(函数及其可见性和状态可变性-Solidity之旅十三)

状态变量可见性 在这之前的文章里,给出的例子中,声明的状态变量都修饰为public,因为我们将状态变量声明为public后,Solidity 编译器自动会为我们生成一个与状态变量同名的、且函数可见性为public的函数! 在 Solidity…

ASP.NET Core 3.1系列(19)——EFCore中的添加实体操作

1、前言 前面介绍了EFCore中关于查询和执行原生SQL的操作,这篇博客就来介绍一下EFCore中添加实体的相关操作。关于添加实体,EFCore提供了多种方法供开发者使用。但EFCore中针对实体的一系列操作最终都会被转换成SQL,因此这些方法之间也存在着…

设计模式之模版方法模式

Template method design pattern 模版方法模式的概念、模版方法模式的结构、模版方法模式的优缺点、模版方法模式的使用场景、模版方法模式的实现示例、模版方法模式的源码分析 1、模版方法模式的概念 模版方法模式,即定义一个算法骨架,而将一些步骤延迟…

ARM——指令集仿真环境搭建

目录 一、ARM指令集仿真环境搭建 1.1指令和指令集 指令 指令集 1.2汇编的本质 汇编 C语言 1.3为什么学习汇编 1.4仿真 硬件仿真 软件仿真 1.5Keil 1.6环境搭建 1.7汇编工程创建 二、汇编 2.1汇编中的符号 2.2ARM指令集 2.3简单的ARM程序 一、ARM指令集仿真环境搭…

Cyanine5 NHS ester |分子量:616.19|分子式:C36H42ClN3O4

Cyanine5 NHS ester |分子量:616.19|分子式:C36H42ClN3O4 外观:暗蓝色粉末 分子量:616.19 分子式:C36H42ClN3O4 溶解性:易溶于有机溶剂(DMF,DMSO和氯化物),难溶于水 …

Mob社会化分享集成ShareSDK

如何在项目已经集成 SMSSDK 的情况下集成 ShareSDk 到项目中,需要使用创建 module 的方式引入 ShareSDk,主要内容如下: 1.下载ShareSDK 2.引入 ShareSDK 3.创建 MainLibs Module 4.创建 OneKeyShare Module 5.在项目中引入 Module 6.配…

Unity Addressables资源管理 主设置面板

Addressables资源管理总目录 0.主设置菜单位置 位置1 位置2 1.Profiles 路径配置选项 这个是全局路径配置的选择 可以点击 Manager Profiles 打开路径配置面板 打包路径设置 2.Diagnostics 诊断设置 Send Profiler Events 打开这个选项,才能在Event Viewer窗口…