Oracle数据库练习:复杂SQL查询挑战
需积分: 7 58 浏览量
更新于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数据库操作。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2012-10-08 上传
2008-11-04 上传
2013-08-20 上传
2008-08-31 上传
2008-02-14 上传
scaudingyiyi
- 粉丝: 0
- 资源: 11
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器