前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这些SQL技能你都会吗? 经典SQL面试题送给你(附答案)

这些SQL技能你都会吗? 经典SQL面试题送给你(附答案)

作者头像
CDA数据分析师
发布2021-02-07 16:00:06
7540
发布2021-02-07 16:00:06
举报
文章被收录于专栏:CDA数据分析师CDA数据分析师

今天就给大家总结一些经典的SQL面试题。

首先熟悉一下数据库相关专业名词, 比如DB、 DBMS和SQL,这些概念常常让人傻傻分不清楚。

数据库(DataBase)是长期存储在计算机内、有组织的、统一管理的相关数据的集合。

数据库管理系统(DataBase Management System)是用于管理数据库的软件( Oracle/DB2/MySQL/sql server等), 它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

SQL是一种结构化查询语言(Structure Query Language),它是国际标准化组织采纳的标准数据库语言。

下面进入正题,给大家分享一套互联网公司数据库笔试题,希望对你有所帮助。

题目背景:

以下是4个表结构情况,提供了脱敏数据。其中学生表有8条记录,课程表有3条记录,教师表有3条记录,成绩表有18条记录。

公司使用Mysql数据库,明确表结构间的关系后,请完成以下题目。解题有不同方法,答案仅供参考。

1. 查询学生编号为01的学生成绩总分、平均分、最高分、最低分

代码语言:javascript
复制
select s_id,sum(score),avg(score),max(score),min(score) from sc where s_id=“01”;

2. 查询名字中含有“风”字的学生信息

代码语言:javascript
复制
select * from stu where s_name like “%风%”;

3. 查询每位同学的平均成绩,并按分数降序、学生编号升序排列

代码语言:javascript
复制
select s_id,avg(score) as 分数 from sc

group by s_id

order by 分数 desc,s_id;

4. 查询至少两门课程及格的学生学号

代码语言:javascript
复制
select s_id from sc

where score>=60

group by s_id

having count(*)>1;

5. 查询仅学过编号“01”和“02”课程的学生编号

代码语言:javascript
复制
select s_id from sc

group by s_id

having sum(c_id=“01”)=1 and sum(c_id=“02”)=1 and count(c_id)=2 ;

6. 每门课程的第二名和第三名

代码语言:javascript
复制
#方法1

select * from sc sc1 where

(select sum(score>sc1.score) from sc where c_id=sc1.c_id) in(1,2);

#方法2 
使用开窗函数
select * from

(select *,dense_rank() over(partition by c_id order by score desc) 排名 from sc) t

where 排名<=2;

7. 查询没学过“张三”老师课程同学的信息

代码语言:javascript
复制
select stu.* from stu

left join sc on stu.s_id=sc.s_id

left join co on sc.c_id=co.c_id

left join te on co.t_id=te.t_id

group by stu.s_id

having ifnull(group_concat(t_name),0) not like “%张三%”;

8. 查询“01”课程比“02”课程分数高的学生信息及课程分数

代码语言:javascript
复制
select stu.*,
sum((c_id=“01”)*score) 01分数,
sum((c_id=“02”)score) 02分数

from stu left join sc on stu.s_id=sc.s_id

group by stu.s_id

having (01分数>02分数) * (sum(c_id in (“01”,“02”))=2);

9. 查询学生的总成绩并进行排名

代码语言:javascript
复制
select s_id,sum(score) 总成绩,
dense_rank() over(order by sum(score) desc) 排名  #开窗函数

from sc

group by s_id;

以上题目你都会吗?

简单总结下:

作为一名数据分析师,玩转SQL查询语言至关重要!重点掌握知识点有:SQL查询语法,多表连接逻辑和查询,常用函数等。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CDA数据分析师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档