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

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

相关推荐
考虑考虑32 分钟前
postgressql更新时间
数据库·后端·postgresql
甄超锋37 分钟前
python sqlite3模块
jvm·数据库·python·测试工具·django·sqlite·flask
HMBBLOVEPDX1 小时前
MySQL的锁:
数据库·mysql
数据皮皮侠2 小时前
最新上市公司业绩说明会文本数据(2017.02-2025.08)
大数据·数据库·人工智能·笔记·物联网·小程序·区块链
掉头发的王富贵3 小时前
ShardingSphere-JDBC入门教程(上篇)
spring boot·后端·mysql
小云数据库服务专线3 小时前
GaussDB数据库架构师修炼(十六) 如何选择磁盘
数据库·数据库架构·gaussdb
码出财富4 小时前
SQL语法大全指南
数据库·mysql·oracle
异世界贤狼转生码农5 小时前
MongoDB Windows 系统实战手册:从配置到数据处理入门
数据库·mongodb
QuZhengRong6 小时前
【数据库】Navicat 导入 Excel 数据乱码问题的解决方法
android·数据库·excel
码农阿豪6 小时前
Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南
数据库·windows