crm开发定制『百日百题 · SQL篇』备战面试,坚持刷题(五)—— 多表查询

本专栏『百日百题』长期更新,crm开发定制一起加入本刷题计划,crm开发定制一起成长吧!

文章目录


前言

crm开发定制为什么要学习SQL?

SQLcrm开发定制是目前使用最广泛的数据库语言。 crm开发定制不管你是程序员、crm开发定制数据分析师、Web开发者、crm开发定制互联网运营,crm开发定制或者做报表的职场白领,crm开发定制掌握良好的SQL知识对用好数据库是极大的帮助,而且在面试中也会对SQL进行一定程度的考察,所以说我们学习SQL是非常必要,也是非常重要的!

为什么要刷题?

编程要在实践中学习,就像游泳要通过游泳来练习。很多学生喜欢把编程当成古诗词去背诵,背诵各种语法,这样是不对的。

学编程应该像学开车一样。教练给学员讲解基本步骤后,主要靠学员在练车过程中去巩固回忆,更多时候靠的是肌肉记忆。

想要掌握一门语言就得,对其多加练习,这样才能在用到的时候运筹帷幄!

用什么刷题?

这里我极力推荐,我们平时写算法题都是在Leetcode之类上面的,当然Leetcode上面也有SQL相关题目,但是必须得会员才可以刷,这对很多人都不太友好。而牛客网就不一样了。

上面的SQL题目几乎都是免费的,大家只要想刷就可以刷,而且牛客网不只是一个题目它是教学平台,都配有视频讲解,需要的同学可以去看。最重要的就是牛客网对所有的SQL题目进行了分类,适合不同阶段的同学,所以我极力推荐大家使用!

本专栏文章即将带你从基础SQL语法到复杂SQL语句,循序渐进持续练习,加入刷题计划一起加油吧!


为了方便刷题我直接把牛客网的链接放在下面,大家点击蓝色字体就可以直接进行跳转刷题了!

传送门:

本系列文章即将带你从SQL基础语法到SQL复杂语句,循序渐进持续练习,加入刷题计划一起加油吧!


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

题目:

题解:

SELECT q.device_id,question_id,result FROM question_practice_detail q JOIN user_profile u ON q.device_id=u.device_idWHERE university='浙江大学'
  • 1
  • 2
  • 3
  • 4

考察知识:

- 多表连接:若一个查询同时涉及两个或两个以上的表,则称之为连接查询。

连接查询是关系数据库中最主要的查询。
连接查询包括内连接、外连接和交叉连接等。

连接查询中用于连接两个表的条件称为连接条件或连接谓词。

一般格式为:

表名1.列名1 = 表名2.列名2
  • 1

内连接语法为:

SELECTFROM 表名[INNER] JOIN 被连接表ON 连接条件
  • 1
  • 2
  • 3
  • 4

例如:查询每个学生及其班级的详细信息

SELECT * FROM 学生表INNER JOIN 班级表 ON 学生表.班号=班级表.班号
  • 1
  • 2
  • 3

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

题目:

题解:

SELECT u.university,    COUNT(q.question_id)/COUNT(DISTINCT q.device_id) AS avg_answer_cntFROM user_profile AS uRIGHT JOIN question_practice_detail AS q ON u.device_id=q.device_idGROUP BY university;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

考察知识:

这里使用到了外连接的知识,这里整体介绍一下这四种连接方式:

  • [INNER] JOIN :内连接,最终结果为在两张表格中都匹配上的数据项(默认情况);
  • LEFT JOIN :左外连接,最终结果为左外连接结果加上左侧表格(此处为第一张表)未匹配上的数据;
  • RIGHT JOIN :右外连接,最终结果为右外连接结果加上右侧表格(此处为第一张表)未匹配上的数据;
  • FULL JOIN :交叉连接,最终结果为交叉连接加上左侧和右侧两张表中未匹配上的数据;

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

题目:

题解:

SELECT     university,    difficult_level,    COUNT(qpd.device_id)/COUNT(DISTINCT qpd.device_id) AS avg_answer_cntFROM user_profile up JOIN question_practice_detail qpd ON up.device_id = qpd.device_idJOIN question_detail qd ON qpd.question_id = qd.question_idGROUP BY university,difficult_level;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

题目:

题解:

SELECT university,difficult_level,COUNT(qpd.question_id)/COUNT(DISTINCT qpd.device_id)avg_answer_cntFROM user_profile upRIGHT JOIN question_practice_detail qpdON up.device_id=qpd.device_idJOIN question_detail qdON qpd.question_id=qd.question_idWHERE university="山东大学"GROUP BY difficult_level;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

题目:

题解:

SELECT device_id,gender,age,gpaFROM user_profileWHERE university="山东大学"UNION ALLSELECT device_id,gender,age,gpaFROM user_profileWHERE gender="male";
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

考察知识:

UNION(并):使用 UNION可以实现将多个查询结果集合并为一个结果集。语法格式为:

SELECT 语句1	UNION [ALL]SELECT 语句2
  • 1
  • 2
  • 3

使用UNION需要注意:

  • 使用UNION ALL是结果不去重;
  • 所有查询语句中列的个数和列的顺序必须相同;
  • 所有查询语句中对应列的数据类型必须兼容;
  • ORDER BY语句要放在最后一个查询语句的后边;

结语

为了方便刷题我直接把刷题网站的链接放在下面,大家点击蓝色字体就可以直接进行跳转刷题了!

传送门:

刷题这件事,大家一定要认真起来,不可懈怠!

日积月累,方成大器!

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发