第1关:字符函数
任务描述
本关任务:以首、尾字母大写,其他字母小写的方式显示所有员工的姓名。
--#请在此添加实现代码
--########## Begin ##########
--以首、尾字母大写,其他字母小写的方式显示所有员工的姓名
SELECT
CONCAT(
UPPER(LEFT(Name, 1)), -- 首字母转大写
LOWER(SUBSTRING(Name FROM 2 FOR LENGTH(Name)-2)), -- 中间字符转小写(从第2位到倒数第2位)
UPPER(RIGHT(Name, 1)) -- 尾字母转大写
) AS name
FROM employee;
--########## End ##########
第2关:数学函数
任务描述
本关任务:根据公式修改学生的最终成绩。
--#请在此添加实现代码
--########## Begin ##########
SELECT
s_name AS "s_name",
ROUND(s_score - SQRT((POWER(4, 4) - POWER(3, 3)) / POWER(2, 2)), 2) AS "score"
FROM score;
--########## End ##########
第3关:日期时间和流程控制类函数
任务描述
本关任务:根据要求编写符合输出条件的SQL。
--#请在此添加实现代码
--########## Begin ##########
--########## 1、查询每个学生在`2024-05-01`时的年龄(展示形式: XX years XX mons XX days) ##########
SELECT
age(timestamp '2024-05-01', s_birth) AS "年龄"
FROM Student;
--########## 2、查询每一门课程的最高分、最低分、平均分(小数点后面保留2位数字)和及格率(每门课程的及格人数(成绩大于等于60)除以该门课程的选课人数,百分数显示,小数点后面保留2位数字),按课程号`c_id`升序输出。 #########
SELECT
c_id AS "课程号",
MAX(s_score) AS "最高分",
MIN(s_score) AS "最低分",
ROUND(AVG(s_score), 2) AS "平均分",
ROUND(100.0 * SUM(CASE WHEN s_score >= 60 THEN 1 ELSE 0 END) / COUNT(*), 2) || '%' AS "及格率"
FROM Score
GROUP BY c_id
ORDER BY c_id ASC;
--########## End ##########
908

被折叠的 条评论
为什么被折叠?



