SQL面试题精选:含Oracle高级查询
需积分: 0 89 浏览量
更新于2024-10-25
收藏 62KB DOC 举报
"Sql常见面试题,主要针对ORACLE数据库,包括高级SQL的运用和一些特定问题的解决。"
在SQL面试中,掌握常见的问题和高效解决方案是非常重要的。以下是一些从提供的信息中提取的关键知识点:
1. **子查询与DISTINCT**:
- 问题1询问如何查询每门课都大于80分的学生。这涉及到使用子查询和DISTINCT关键字。解决方案是找到分数低于或等于80的学生,并从总名单中排除这些学生。
```sql
SELECT DISTINCT name FROM table WHERE name NOT IN (SELECT DISTINCT name FROM table WHERE score <= 80)
```
2. **删除重复数据**:
- 问题2涉及删除具有相同学号、姓名、课程编号、课程名称和分数的冗余记录,但保留其中一个(通常是最小的自动编号)。这需要使用GROUP BY和HAVING子句配合MIN函数。
```sql
DELETE FROM tablename WHERE 自动编号 NOT IN (SELECT MIN(自动编号) FROM tablename GROUP BY 学号, 姓名, 课程编号, 课程名称, 分数)
```
3. **全连接和比赛组合**:
- 创建比赛组合的问题可以通过全连接(FULL JOIN)解决,但在Oracle中,没有内置的全连接,通常用UNION ALL结合LEFT和RIGHT JOIN实现。示例中的答案使用了简单的INNER JOIN,因为名字是唯一的(假设没有平局)。
```sql
SELECT a.name, b.name FROM department a, department b WHERE a.name < b.name
```
4. **条件聚合和比较**:
- 查询TestDB中所有月份的发生额高于101科目的发生额,这需要使用子查询和聚合函数MAX。首先找到101科目每个月的最大发生额,然后与所有科目进行比较。
```sql
SELECT a.* FROM TestDB a, (SELECT Occmonth, MAX(DebitOccur) AS Debit101Occur FROM TestDB WHERE AccID = '101' GROUP BY Occmonth) b
WHERE a.Occmonth = b.Occmonth AND a.DebitOccur > b.Debit101Occur
```
面试题未完,但已展示了一些关键的SQL概念,如子查询、DISTINCT、聚合函数、JOIN和删除重复数据。在实际面试中,理解并能灵活应用这些技术是至关重要的。此外,对于ORACLE数据库,还需要了解其特有的功能,例如分区、物化视图、存储过程、触发器等。熟悉SQL标准的同时,掌握特定数据库系统的特性将使你在面试中更具竞争力。
点击了解资源详情
282 浏览量
点击了解资源详情
181 浏览量
180 浏览量
150 浏览量
2008-10-26 上传
271 浏览量
204 浏览量
iamxiaoke
- 粉丝: 0
- 资源: 2
最新资源
- MovieGo:使用MERN(MongoDB,ExpressJS,ReactJS和NodeJS)堆栈实现的网站,允许用户在线注册和预订电影票
- ASP.NET Adrotator及其实现
- eXtended Screenshot (xscreenshot)-开源
- uas-kelompok1:布鲁尔先生
- C#UI库CSkin源码
- 分数阶傅里叶matlab.rar
- jsch-0.1.53.jar实现SFTP上传下载删除
- java写webapi源码-lookup-student-apidoc:查找学生apidoc
- SVG_Mandala:曼陀罗发生器-开源
- kotoba.js:另一个Imageboard引擎
- 作业1拍
- 索引队列-C#中的自定义队列
- copy2.0:复制系统,微信调用,实时统计,加粉统计
- CevinJohnny.github.io
- discord-perms:Discord Perms是使用mongodbmongoose构建的易于使用的权限管理器。 对于较小的项目,它非常简单和完美,使用Discord Perms,您可以为discord.js创建自己的权限! 权限通过MongoDB处理
- LeetCode_in_cpp