MySQL数据库 - 其他函数的使用第3关:日期时间函数和流程控制类函数

任务描述

本关任务:根据要求编写符合输出条件的SQL

相关知识

日期函数

本章节介绍MySQL中的日期时间函数,下面列出常用的函数:

函数说明
NOW()当前日期和时间
CURDATE()当前日期
CURTIME()当前时间
DATE_ADD()日期变化
DATEDIFF()日期差值
DATE_FORMAT()日期格式化
YEAR()返回日期的年份
MONTH()返回日期的月份
WEEK()返回日期的周号
NOW()、CURDATE()和CURTIME()
  • NOW()返回当前日期和时间;

  • CURDATE()则单独返回当前日期,CURTIME()则返回当前时间。

DATE_ADD()、DATEDIFF()和DATE_FORMAT()
  • DATE_ADD()从函数名称来看会想当然的认为是时间的添加,但其实可以添加也可以减少,因此我们将其说明为日期的变化,第一个参数为指定时间,第二个参数为增加(减少)的单位值(YEARMONTHSWEEKDAY);

  • DATEDIFF()函数则返回二个日期之间的差值;

  • DATE_FORMAT()函数为日期格式化,也就是将我们常见的日期格式转换成另一种格式。

以下是在format字符串中常用的说明符,更多的说明符可在 MySQL 官方文档中进行查看:

格式描述
%d月的天,数值(00-31
%H小时 (00-23
%h小时 (01-12
%m月,数值(00-12
%pAM 或 PM
%s秒(00-59
%T时间,24-小时(hh:mm:ss
%Y年,4 位
YEAR()和MONTH()

流程控制类函数
函数说明
IF()判断,流程控制
IFNULL()字段值是否为空
CASE搜索语句
  • IF()函数:IF(a,b,c) 如果a为真返回b,否则返回c

  • IFNULL()函数:IFNULL(a,b) 如果a不为null返回a,否则返回b

  • CASECASE WHEN a then b end 判断如果a为真返回b

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  1. 查询所有学生的出生年份及至2019-01-01时的年龄;

  2. 查询所有课程中的最高分、最低分、平均分和及格率,按课程id升序输出。

Student表结构:

字段名说明
s_id学生id
s_name学生姓名
s_birth学生生日
s_sex学生性别

Course表结构:

字段名说明
c_id课程id
c_name课程名

Score表结构:

字段名说明
s_id学生id
c_id课程id
s_score学生成绩
测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。


开始你的任务吧,祝你成功!



#请在此添加实现代码
########## Begin ##########

##########  查询学生出生年份及年龄 ##########
SELECT YEAR(s_birth) as year,2019-s_birth as "年龄" FROM Student;


##########  查询课程的最高分、最低分、平均分和及格率 #########
SELECT 
    Course.c_id as "课程id",
    Course.c_name as "课程名", 
    MAX(Score.s_score)as "最高分",
    MIN(Score.s_score)as "最低分",
    ROUND(AVG(Score.s_score),2) as "平均分" , 
    ROUND(SUM(CASE WHEN Score.s_score >= 60 then 1 else 0 END)/COUNT(*) * 100,2) as "及格率" 
    FROM Course join Score on Course.c_id=Score.c_id 
    GROUP BY Course.c_id;


########## End ##########




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值