OpenGauss数据库-E.字符、数学和日期函数

第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 ##########

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JzSt_Han

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值