Oracle数据库练习:复杂SQL查询挑战
需积分: 7 28 浏览量
更新于2024-09-14
收藏 15KB DOCX 举报
"Oracle试题集,包括基础练习题,考察对Oracle数据库操作的掌握。"
在这些Oracle试题中,我们可以看到一些基本的SQL查询技巧和概念的运用,这将有助于我们理解如何在实际环境中处理数据。
(1)问题要求找出购买商品种类超过两种的购物人记录。这需要使用GROUP BY和HAVING子句来分组购物人并计算他们购买的不同商品种类数。答案可能如下:
```sql
SELECT 购物人
FROM 购物信息
GROUP BY 购物人
HAVING COUNT(DISTINCT 商品名称) >= 2;
```
(2)第二个问题是找出所有课程成绩均合格(即分数大于等于60)的学生信息。这可以通过连接“成绩表”自身并应用WHERE子句来实现,确保每个学生的所有课程分数都合格。答案可能如下:
```sql
SELECT 姓名, 课程, 分数
FROM 成绩表
WHERE 分数 >= 60
AND 姓名 IN (
SELECT 姓名
FROM 成绩表
GROUP BY 姓名
HAVING COUNT(*) = (SELECT COUNT(DISTINCT 课程) FROM 成绩表)
);
```
(3)第三个问题要求找到平均进价低于2元的商品名称。这需要先计算每种商品的平均价格,然后筛选出符合条件的商品。答案可能如下:
```sql
SELECT 名称
FROM 商品表
GROUP BY 名称
HAVING AVG(进价) < 2;
```
(4)第四个问题需要找出高考总分(所有科目的分数之和)在600分以上的学生准考证号。由于数据重复,首先需要去重,然后计算总分。答案可能如下:
```sql
SELECT DISTINCT 准考证号
FROM (
SELECT 准考证号, SUM(成绩) AS 总分
FROM 高考信息表
GROUP BY 准考证号
) 总分表
WHERE 总分 >= 600;
```
(5)第五个问题与第四个类似,但数据已经按准考证号和科目聚合,可以直接计算总分。答案如下:
```sql
SELECT 准考证号
FROM (
SELECT 准考证号, SUM(成绩) AS 总分
FROM 高考信息表
GROUP BY 准考证号
) 总分表
WHERE 总分 >= 600;
```
(6)第六个问题的描述不完整,但看起来可能是在询问关于俱乐部成员的性别分布。如果需要找出男性和女性的成员数量,可以使用COUNT函数和CASE语句:
```sql
SELECT id,
COUNT(CASE WHEN gender = '男' THEN 1 END) AS 男性人数,
COUNT(CASE WHEN gender = '女' THEN 1 END) AS 女性人数
FROM club
GROUP BY id;
```
这将返回每个id对应的男性和女性成员数量。
以上解答涵盖了Oracle SQL中的基础查询、聚合函数、分组、连接、子查询以及条件判断等关键知识点。通过解决这些问题,可以深入理解和熟练掌握Oracle数据库操作。
164 浏览量
2012-07-26 上传
2012-10-08 上传
2008-11-04 上传
2013-08-20 上传
2010-07-15 上传
2008-08-31 上传
scaudingyiyi
- 粉丝: 0
- 资源: 11
最新资源
- 达梦数据库DM8手册大全:安装、管理与优化指南
- Python Matplotlib库文件发布:适用于macOS的最新版本
- QPixmap小demo教程:图片处理功能实现
- YOLOv8与深度学习在玉米叶病识别中的应用笔记
- 扫码购物商城小程序源码设计与应用
- 划词小窗搜索插件:个性化搜索引擎与快速启动
- C#语言结合OpenVINO实现YOLO模型部署及同步推理
- AutoTorch最新包文件下载指南
- 小程序源码‘有调’功能实现与设计课程作品解析
- Redis 7.2.3离线安装包快速指南
- AutoTorch-0.0.2b版本安装教程与文件概述
- 蚁群算法在MATLAB上的实现与应用
- Quicker Connector: 浏览器自动化插件升级指南
- 京东白条小程序源码解析与实践
- JAVA公交搜索系统:前端到后端的完整解决方案
- C语言实现50行代码爱心电子相册教程