SQL面试题精选:解决复杂查询问题
需积分: 31 176 浏览量
更新于2024-08-01
收藏 64KB DOC 举报
"Sql常见面试题"
SQL是Structured Query Language的缩写,是用于管理和处理关系数据库的标准语言。以下是一些常见的SQL面试题及其解答,这些题目涵盖了基础查询、子查询、聚合函数以及复杂的联接操作。
1. 查询每门课都大于80分的学生姓名:
```sql
SELECT DISTINCT name
FROM table
WHERE name NOT IN (SELECT DISTINCT name FROM table WHERE score <= 80)
```
此题旨在找出所有课程平均成绩超过80分的学生。使用NOT IN子查询排除了分数低于或等于80分的学生。
2. 删除重复的学生记录,保留每个组合的最小自动编号:
```sql
DELETE FROM tablename
WHERE 自动编号 NOT IN (SELECT MIN(自动编号) FROM tablename GROUP BY 学号, 姓名, 课程编号, 课程名称, 分数)
```
此题要求去除学生表中的冗余记录,只保留每个(学号,姓名,课程编号,课程名称,分数)组合的最低自动编号记录。
3. 展示所有可能的比赛组合:
```sql
SELECT a.name, b.name
FROM team_a a, team_b b
WHERE a.name < b.name
```
这道题涉及到两个团队之间的所有可能比赛组合,通过自我联接并设定条件`a.name < b.name`来确保每对组合只出现一次。
4. 查询所有月份发生额高于科目101的科目:
```sql
SELECT a.*
FROM TestDB a
JOIN (SELECT Occmonth, MAX(DebitOccur) AS Debit101Occur FROM TestDB WHERE AccID = '101' GROUP BY Occmonth) b
ON a.Occmonth = b.Occmonth AND a.DebitOccur > b.Debit101Occur
```
该问题要求找出每个月份其发生额都高于科目101的其他科目。首先,从TestDB中找出科目101的每月最高发生额,然后通过JOIN操作与原表对比,筛选出发生额更高的记录。
以上面试题涉及到了SQL的基础操作,如选择(SELECT)、排除(NOT IN)、分组(GROUP BY)、联接(JOIN)、聚合函数(MAX),以及子查询的使用。掌握这些知识点对于理解SQL查询的基本逻辑至关重要,同时也是数据库管理员、数据分析师等IT职业面试中常见的考核内容。
2023-02-20 上传
2023-04-24 上传
2229 浏览量
2024-09-29 上传
2011-02-24 上传
7955 浏览量
DracoTianlong
- 粉丝: 347
- 资源: 32
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率