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

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

相关推荐
maqr_1101 分钟前
MySQL数据库迁移到云端如何保障安全_数据加密与SSL连接配置
jvm·数据库·python
u0109147606 分钟前
MySQL如何限制触发器递归调用的深度_防止触发器死循环方法
jvm·数据库·python
weixin_3812881811 分钟前
MySQL中如何使用HEX函数转换十六进制_MySQL进制转换函数
jvm·数据库·python
Deitymoon19 分钟前
嵌入式数据库——SQLite基础
数据库·sqlite
YMatrix 官方技术社区20 分钟前
美国·硅谷|YMatrix 即将亮相 Postgres Conference 2026,前瞻 AI 时代的数据基座
数据库·数据仓库·postgresql·时序数据库·ymatrix
bKYP953cL22 分钟前
构建自己的AI编程助手:基于RAG的上下文感知实现方案
数据库·人工智能·ai编程
Bert.Cai23 分钟前
MySQL DML简介
数据库·mysql
maqr_11031 分钟前
HTML怎么生成订单预览_HTML只读订单信息结构【操作】
jvm·数据库·python
2301_803875611 小时前
如何通过phpMyAdmin给WordPress所有用户发送全站通知_系统表插入
jvm·数据库·python
2301_777599372 小时前
mysql如何进行数据库容量规划_评估磁盘空间增长趋势
jvm·数据库·python