Mysql数据库函数【Mysql】
- 前言
- 版权
- Mysql数据库函数
- 常用函数
- 排序与分页
- 单行函数
-
- 2.数值函数
- 3.字符串函数
- 4.日期和时间函数
-
- 4.1获取日期、时间
- 4.2日期与时间戳的转换
- 4.3获取月份、星期、星期数、天数等函数
- 4.4日期的操作函数
- 4.5时间和秒钟转换的函数
- [4.6 计算日期和时间的函数](#4.6 计算日期和时间的函数)
- 4.7日期的格式化与解析
- 5.流程控制函数
- 6.加密与解密函数
- 7.Mysql信息函数
- 8.其他函数
- 聚合函数
- 最后
前言
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);
*/
排序与分页
排序
使用 ORDER BY 子句排序
ASC(ascend): 升序
DESC(descend):降序
ORDER BY 子句在SELECT语句的结尾。
单列排序
多列排序
分页
格式:
LIMIT 位置偏移量, 行数
第一个"位置偏移量"参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定"位置偏移量",将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数"行数"指示返回的记录条数。
分页显式公式:(当前页数-1)*每页条数,每页条数:
SELECT * FROM table LIMIT(PageNo - 1)*PageSize,PageSize;
单行函数
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.其他函数
聚合函数
聚合函数类型
- AVG()
- SUM()
- MAX()
- MIN()
- COUNT()
最后
2024-3-25 14:19:42
迎着日光月光星光,直面风霜雨霜雪霜。