本专栏『百日百题』长期更新,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
内连接语法为:
SELECT …FROM 表名[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
语句要放在最后一个查询语句的后边;
结语
为了方便刷题我直接把刷题网站的链接放在下面,大家点击蓝色字体就可以直接进行跳转刷题了!
传送门:
刷题这件事,大家一定要认真起来,不可懈怠!
日积月累,方成大器!