Mysql数据库函数【Mysql】

Mysql数据库函数【Mysql】

前言

2024-3-25 14:19:38

以下内容源自《【Mysql】》
仅供学习交流使用

版权

禁止其他平台发布时删除以下此话
本文首次发布于CSDN平台
作者是CSDN@日星月云
博客主页是https://jsss-1.blog.csdn.net
禁止其他平台发布时删除以上此话

Mysql数据库函数

常用函数

函数 解释
ROUND(x,y) 返回一个对x的值进行四舍五入后最接近x的值,并保留到小数点后面Y位
CONCAT(s1,s2...n) 连接s1,s2...,sn为一个字符串
YEAR(date)MONTH(date) / DAY(date) 返回具体的日期值
HOUR(time) MINUTE(time) /SECOND(time) 返回具体的时间值、
DATEDIFF(date1,date2) 返回date1 - date2的日期间隔天数
CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2...[ELSE resultn] END 相当于Java的if...else if...else...

现有课程信息表course_info_tb(cid 课程ID,tag 视频类别 release_date 发布日期,duration 视频时长)

示例数据如下

用户观看记录表play_record_tb(uid 用户ID,cid 课程ID,start time 开始观看时间,end_time 结束观看时间,score 用户评分)

请统计每类视频的平均播放进度,对于每条播放记录,播放进度=播放时长÷视频时长。特殊地,如果播放时长大于视频时长,则播放进度记为100%。结果以百分数的形式保留一位小数。结果按播放进度降序 排序示例输出如下

sql 复制代码
tag  	avg_play_progress
c++ 	61.1%
python 	34.4%
sql 复制代码
/*

现有课程信息表course_info_tb(cid 课程ID,tag 视频类别 release_date 发布日期,duration 视频时长)
示例数据如下


用户观看记录表play_record_tb(uid 用户ID,cid 课程ID,start time 开始观看时间,end_time 结束观看时间,score 用户评分)


请统计每类视频的平均播放进度,对于每条播放记录,播放进度=播放时长÷视频时长。特殊地,如果播放时长大于视频时长,则播放进度记为100%。结果以百分数的形式保留一位小数。结果按播放进度降序 排序示例输出如下

tag  	avg_play_progress
c++ 	61.1%
python 	34.4%
 */

SELECT
    c.tag,
    CONCAT(
        ROUND(AVG(
                         CASE
                             WHEN end_time < start_time THEN 0
                             WHEN end_time > DATE_ADD(start_time, INTERVAL c.duration MINUTE) THEN 100
                             ELSE (UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time)) / (c.duration * 60) * 100
                             END
                     ), 1)
        ,'%') AS avg_play_progress
FROM play_record_tb p
         JOIN course_info_tb c ON p.cid = c.cid
GROUP BY c.tag
ORDER BY avg_play_progress DESC;


/*

create table course_info_tb
(
    id           int         null,
    cid          int         null,
    release_date date        null,
    duration     int         null,
    tag          varchar(16) null
);

INSERT INTO ms_blibli.course_info_tb (id, cid, release_date, duration, tag) VALUES (1, 9001, '2022-01-01', 60, 'c++');
INSERT INTO ms_blibli.course_info_tb (id, cid, release_date, duration, tag) VALUES (2, 9002, '2022-01-01', 90, 'python');
INSERT INTO ms_blibli.course_info_tb (id, cid, release_date, duration, tag) VALUES (3, 9003, '2022-01-01', 45, 'sql');
INSERT INTO ms_blibli.course_info_tb (id, cid, release_date, duration, tag) VALUES (4, 9004, '2022-01-02', 45, 'java');



 create table play_record_tb
(
    id         int      null,
    uid        int      null,
    cid        int      null,
    start_time datetime null,
    end_time   datetime null,
    score      int      null
);

INSERT INTO ms_blibli.play_record_tb (id, uid, cid, start_time, end_time, score) VALUES (1, 1001, 9001, '2022-01-01 08:30:00', '2022-01-01 09:00:00', 5);
INSERT INTO ms_blibli.play_record_tb (id, uid, cid, start_time, end_time, score) VALUES (2, 1001, 9002, '2022-01-02 08:30:00', '2022-01-02 09:01:00', 4);
INSERT INTO ms_blibli.play_record_tb (id, uid, cid, start_time, end_time, score) VALUES (3, 1001, 9001, '2022-01-03 09:30:00', '2022-01-03 10:20:00', 5);
INSERT INTO ms_blibli.play_record_tb (id, uid, cid, start_time, end_time, score) VALUES (4, 1002, 9001, '2022-01-01 08:30:00', '2022-01-01 09:00:00', 3);




 */

排序与分页

排序

Mysql笔记:第05章_排序与分页

使用 ORDER BY 子句排序

ASC(ascend): 升序

DESC(descend):降序

ORDER BY 子句在SELECT语句的结尾。

单列排序

多列排序

分页

格式:

LIMIT 位置偏移量, 行数

第一个"位置偏移量"参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定"位置偏移量",将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数"行数"指示返回的记录条数。

分页显式公式:(当前页数-1)*每页条数,每页条数:

SELECT * FROM table LIMIT(PageNo - 1)*PageSize,PageSize;

单行函数

MySQL笔记:第07章_单行函数

2.数值函数

2.1基本函数

2.2角度与弧度

2.3三角函数

2.4指数与对数函数

2.5进制间的转换

3.字符串函数

注意:MySQL中,字符串的位置是从1开始的。

4.日期和时间函数

4.1获取日期、时间

4.2日期与时间戳的转换

4.3获取月份、星期、星期数、天数等函数

4.4日期的操作函数

4.5时间和秒钟转换的函数

4.6 计算日期和时间的函数

4.7日期的格式化与解析

5.流程控制函数

6.加密与解密函数

7.Mysql信息函数

8.其他函数

聚合函数

MySQL笔记:第08章_聚合函数

聚合函数类型

  • AVG()
  • SUM()
  • MAX()
  • MIN()
  • COUNT()

最后

2024-3-25 14:19:42

迎着日光月光星光,直面风霜雨霜雪霜。

相关推荐
新子-存在了13 分钟前
linux中 mysql备份
linux·运维·mysql
Fool丶玄浅32 分钟前
【数据库系统概论】—— 关系数据库
数据库·数据库系统
DashVector1 小时前
如何通过HTTP API检索Doc
数据库·人工智能·http·阿里云·数据库开发·向量检索
vvw&2 小时前
如何在 Ubuntu 22.04 上安装 phpMyAdmin
linux·运维·服务器·mysql·ubuntu·php·phpmyadmin
SEO-狼术2 小时前
Enhance Security in Software Crack
数据库
计算机毕设定制辅导-无忧学长2 小时前
Redis 初相识:开启缓存世界大门
数据库·redis·缓存
奥顺互联V2 小时前
深入理解 ThinkPHP:框架结构与核心概念详解
大数据·mysql·开源·php
Rverdoser3 小时前
redis延迟队列
数据库·redis·缓存
weisian1513 小时前
Redis篇--常见问题篇6--缓存一致性1(Mysql和Redis缓存一致,更新数据库删除缓存策略)
数据库·redis·缓存
MrJson-架构师4 小时前
4.银河麒麟V10(ARM) 离线安装 MySQL
arm开发·mysql