SQL强化训练:选取最大值与日期处理

需积分: 9 2 下载量 161 浏览量 更新于2024-09-10 收藏 372KB PDF 举报
"老二牛车教育提供的SQL强化训练题库,旨在提升SQL语句的书写能力,要求在100分钟内使用单条SQL语句完成题目。训练题库包含多个难度,总分为100分,目标是达到60分。训练内容包括数据库操作、条件判断、日期处理等,数据库文件和答案可在指定百度网盘链接获取。" 这篇训练题涉及到的关键SQL知识点如下: 1. 条件选择: - 在`ColumnValueMax`表中,需要根据A、B、C三列的值选取最大值。这个题目考察的是如何利用CASE WHEN语句或者GREATEST函数来实现多条件的选择。例如,可以使用如下SQL语句: ```sql SELECT CASE WHEN A > B THEN A WHEN B > C THEN B ELSE C END AS MaxValue FROM ColumnValueMax; ``` 2. 日期和时间格式转换: - 题目要求按照年月日格式输出`D`列的时间。可以使用DATEPART函数提取年、月、日,如: ```sql SELECT DATEPART(year, D) AS 年, DATEPART(month, D) AS 月, DATEPART(day, D) AS 日 FROM ColumnValueMax; ``` 3. 日期过滤: - 从`ColumnValueMax`表中筛选出日期为'2008-1-2'的记录,可以使用WHERE子句配合日期比较: ```sql SELECT D FROM ColumnValueMax WHERE D = '2008-01-02 00:00:00'; ``` 4. 成绩分类: - `ColumnValueMax`表中的A、B、C三列代表不同科目的分数,需要按照分数标准将等级显示出来。这需要使用CASE WHEN进行条件判断,例如: ```sql SELECT CASE WHEN A >= 80 THEN '优秀' WHEN A >= 60 THEN '及格' ELSE '不及格' END AS 语文, CASE WHEN B >= 80 THEN '优秀' WHEN B >= 60 THEN '及格' ELSE '不及格' END AS 数学, CASE WHEN C >= 80 THEN '优秀' WHEN C >= 60 THEN '及格' ELSE '不及格' END AS 英语 FROM ColumnValueMax; ``` 5. 部门与销售数据的关联查询: - 假设有一个`Dept`表和一个`DeptSales`表,要查询每个部门的名称及其对应的销售额,可以使用JOIN操作: ```sql SELECT D.DeptName, DS.SubjMonth, DS.Sales FROM Dept D JOIN DeptSales DS ON D.DeptID = DS.DeptID; ``` 以上就是训练题中涉及的主要SQL知识点,通过这些练习,可以有效提高SQL查询和数据处理的能力。