当前位置: 首页 > article >正文

【MySQL】——用一文解决@基础函数group by

目录

前言 

📒1.聚合函数

🌾1.1统计数据数量——count( )

🍄1.2统计数据总和——sum( )

🍀1.3计算平均值——avg( )

☘️1.4找出最大值——max( )

💐1.5找出最小值——min( )

📗2.日期函数

📅2.1获得年月日——current_date函数

🕗2.2获得时分秒——current_time函数

🔖2.3获得时间戳——current_timestamp函数

2.4加上时间——date_add函数

🔎2.5减去时间——date_sub函数

📉2.6计算相差天数——dateidff函数

📙3.字符串函数

✏️3.1连接字符串——concat( )

🖊3.2转换成大写——ucase( )

🖋3.3转换成小写——lacse( )

✒️3.4获取字符串长度——length( )

📁3.5替换字符串——replace( )

📘4.数学函数

📏4.1求绝对值——abs函数

📏4.2向上取整——ceiling函数

📏4.3向下取整——floor函数

📏4.4保留n位小数——format函数

📏4.5获取随机数——rand函数

📕5.group by

总结


前言 

🔎你现在认清函数的重要性了吗?

它是某一功能的实现,亦是代码的集合

有了我们自己写的函数,我们不用重复写一些代码

有了内置函数,我们可以轻松搞定一些复杂的问题

一句话:🔥编程不能没有函数,就像西方不能没有耶路撒冷🔥

本章节重点——MySQL的函数&&如何分组

📒1.聚合函数


🌾1.1统计数据数量——count( )

想要得到目前一共多少个数据,我们可以使用count函数来完成!

语法:

count([disinct] expr);

示例: 

现在有一张EMP员工表

我需要统计一共有多少个员工

密密麻麻的,我不想自己一个一个数,使用count()搞定

🍄1.2统计数据总和——sum( )

当需要计算一下数据总和的时候,就可以使用sum()一键完成!

语法:

sum([distinct] expr);

示例:

查看部门号为10的员工的工资总和

 

🍀1.3计算平均值——avg( )

一旦数据多了起来,求取平均值就很麻烦了

不仅需要统计数量,还有算出数据总和

真要算,很无力,好在我们可以使用avg()一键获取!

语法:

avg([distinct] expr);

示例:

 计算部门号为10的部门平均薪水

☘️1.4找出最大值——max( )

我们有时候,就喜欢争一个最高、最强、最大

要想一眼看出来谁最大,我们可以使用max()一键完成

语法:

max([distinct] expr);

示例:

查询部门号为10的部门的最高薪水

 

💐1.5找出最小值——min( )

要想一眼看出来谁最小,我们可以使用min()一键完成

语法:

min([distinct] expr);

示例:

查看部门号为10的部门中的最低薪资

📗2.日期函数


📅2.1获得年月日——current_date函数

语法:

current_date();
  • 无参数 

示例:

查看当前 年月日

 

🕗2.2获得时分秒——current_time函数

语法:

current_time();
  • 无参数 

示例:

查看当前 时分秒

🔖2.3获得时间戳——current_timestamp函数

语法:

current_timestamp();

示例:

获得当前 时间戳

2.4加上时间——date_add函数

当你想要看看当前日期,加上一定天数,是什么时候时

可以使用date_add函数帮你一键计算!

语法

date_add('yyyy-mm-dd',interval num day);

示例:

我想看看365天后的今天,是什么时候

 

🔎2.5减去时间——date_sub函数

记性很差的人,经常会忘记前几天是什么时候

date_sub函数,就会帮你回忆起来,获得过去日期

语法:

date_sub('yyyy-mm-dd',interval num day);

示例: 

查看365天前是什么时候

📉2.6计算相差天数——dateidff函数

🔥学习很苦,坚持很苦🔥

如果你想看看,你已经坚持学习多少天了,就可以使用dateidff函数一键获取

语法:

datediff('yyyy-mm-dd','yyyy-mm-dd');
  • 第一个日期参数减去第二个日期参数

 示例:

今天离中国人第一次进入太空距离多少天呢?

📙3.字符串函数


✏️3.1连接字符串——concat( )

我们会有这样的需求:需要将一行数据记录中各个字段的值拼接成一个字符串

这时候,就可以使用concat函数来进行拼接,并且可以添加一些提示信息

语法:

concat(sting1,string2,......);

示例:

要求显示examp_result表中的信息

显示格式:"XXX的语文是XXX分,数学XXX分,英语XXX分"

🖊3.2转换成大写——ucase( )

我们使用ucase函数

可以将一个字符串中所有的小写字母替换成对应的大写字母

语法:

ucase(string1);

示例:

'AbCdEf' 中的小写全部替换成大写

🖋3.3转换成小写——lacse( )

我们使用uacase函数

可以将一个字符串中所有的大写字母替换成对应的小写字母

语法:

lcase(string1);

示例:

'AbCdEf' 中的大写都替换成小写

✒️3.4获取字符串长度——length( )

语法:

length(string1);

示例:

求一个字符串 'AbCdE' 的长度

求一个由三个中文组成的字符串 '陈平安' 的长度

📁3.5替换字符串——replace( )

当字符串中,有一部分发生错误

我们就可以使用replace用正确的字符串去替换其中的错误部分

语法:

replace(str,search_str,replace_str)

示例:

'安' 去替换 '陈平方' 中的 '方' 

📘4.数学函数


📏4.1求绝对值——abs函数

语法:

abs(number);

示例:

7 取绝对值

-7 取绝对值

📏4.2向上取整——ceiling函数

什么是向上取整?

向上取整,就是向上靠齐

就像你父母小时候会和你说的一句话“孩子,多和成绩好的同学一起玩”

比如你考89.5,你和99的同学一起玩

在你父母眼里,久而久之,向上取整,你就考90了

向上取整,就是舍弃小数,整数+1

语法:

ceiling(number);

示例:

对89.5向上取整

对-89.5向上取整

说明:

  • 正数向上取整向绝对值更大的方向靠近
  • 负数向上取整向绝对值更小的方向靠近

📏4.3向下取整——floor函数

什么是向下取整?

向下取整,就是向下靠齐

你可能比较调皮,不喜欢把心思放在学习上,喜欢玩

原本你能考79.5,一直玩到下次考试

你就考了79了

所以,向下取整,就是舍弃小数,整数-1

语法:

floor(number);

示例:

79.5 向下取整

-79.5 向下取整

说明:

  • 正数向下取整就是向绝对值更小靠近
  • 负数向下取整就是向绝对值更大靠近

📏4.4保留n位小数——format函数

当对数据精度要求不是很高的时候

我们可以使用 format函数 选择性去掉一些小数

语法:

format(number,decimal_place);

示例:

对进行 3.1415926 保留两位小数

📏4.5获取随机数——rand函数

我们有些时候,需要一些随机值,来代表偶然性

这时候,就可以使用rand来获取随机值

语法:

rand();

示例:

生成一个随机数

对随机数进行乘法操作

📕5.group by

不同行数据记录之间,也会因为一些字段值相同,而存在某种关系

具有相同字段值的一些行数据记录,我们可以将其视为同组数据

这样,庞大的行数据记录也可以被划分为更小的几组

我们使用关键字group by 对表的数据进行分组

语法:

select 列名1,...... from 表名 where 条件 gruop by 列名1,......;

示例:

先有一张emp表

上面有多条员工信息记录,仔细观察,就会发现

员工的部门号只有三个值:10、20、30

我们可以根据部门号,对员工进行分组

现在,用部门号对员工分组,并查看每个部门有多少人

现在,查看每个部门的最高工资,最低工资,平均工资

想看看,每个部门中有谁吗?

试试看,显示出,每个部门中的每个员工姓名

报错了,MySQL无法执行

为什么呢?🤔

这设计到SQL语句执行顺序的关系,里面的水太深,你暂时把握不住

但目前你只要知道,group by 是可以和聚合函数配合的 即可

总结

本章关于函数的认识到此为止,我们主要介绍了一些常用的数据库基础函数

还有很多没有介绍的函数,因为不经常用,所以不解释

目前掌握这些函数,就足够了

留下一个坑:SQL语言的执行顺序

下一文章讲解!

如果有帮助,点赞收藏评论加关注!


http://www.kler.cn/a/429212.html

相关文章:

  • GPT-5 传言:一场正在幕后发生的 AI 变革
  • 128.最长连续序列
  • 【蓝桥杯】Python算法——求逆元的两种算法
  • LoadBalancer负载均衡服务调用
  • Windows重装后NI板卡LabVIEW恢复正常
  • Linux第二课:LinuxC高级 学习记录day04
  • 同步数据至ES时,数据丢失问题处理
  • 为什么 JavaScript 中的 `eval` 被禁止使用?
  • 运维工程师.云计算工程师.服务器操作集锦
  • Sui 集成 Phantom,生态迎来全新里程碑
  • aws(学习笔记第十六课) 使用负载均衡器(ELB)解耦webserver以及输出ELB的日志到S3
  • 解决:IDEA中@Autowired自动注入MyBatis Mapper报红警告的几种解决方法
  • SQL注入--二次注入
  • Mybatis-plus 简单使用,mybatis-plus 分页模糊查询报500 的错
  • 设计模式的艺术读书笔记
  • 前端热门面试题目(六)
  • Elasticsearch使用(2):docker安装es、基础操作、mapping映射
  • MTK关于 Camera Otp
  • 快速了解什么是WELL认证?
  • Kotlin设计模式之抽象工厂模式
  • Linux C/C++如何处理两个静态库相互依赖的问题
  • Vulkan 开发(十二):Vulkan 渲染通道
  • 3D 生成重建026-Wonder3D单视图3d生成
  • 2024.12.6——攻防世界PHP2
  • 2024年11月中国及周边部分亚洲国家干旱情况的监测报告
  • Linux下redis环境的搭建