【2024】MySQL中常用函数和窗口函数的基本使用方式

news2024/9/27 23:30:39

MySQL中常用函数和窗口函数的基本使用方式

  • 一、基础函数
      • 1、聚合函数:
      • 2、字符串函数:
      • 3、日期和时间函数
      • 4、数值函数
      • 5、条件函数
  • 二、窗口函数(*OVER*)

一、基础函数

1、聚合函数:

  • SELECT COUNT(*) FROM table_name;:计算表中的行数。
  • SELECT SUM(column_name) FROM table_name;:计算表中指定列的总和。
  • SELECT AVG(column_name) FROM table_name;:计算表中指定列的平均值。
  • SELECT MAX(column_name) FROM table_name;:返回表中指定列的最大值。
  • SELECT MIN(column_name) FROM table_name;:返回表中指定列的最小值。

2、字符串函数:

  • SELECT CONCAT(first_name, '-', last_name) AS full_name FROM table_name;:将 first_namelast_name 字段连接为一个完整的名字。
  • SELECT SUBSTRING(column_name, start_position, length) FROM table_name;:从指定位置开始提取指定长度的子字符串。
  • SELECT LENGTH(column_name) FROM table_name;:返回字符串的长度。
  • SELECT LOWER(column_name) FROM table_name;:将字符串转换为小写。
  • SELECT UPPER(column_name) FROM table_name;:将字符串转换为大写。

3、日期和时间函数

  • SELECT NOW();:返回当前日期和时间。
  • SELECT DATE(column_name) FROM table_name;:从日期时间值中提取日期部分。
  • SELECT TIME(column_name) FROM table_name;:从日期时间值中提取时间部分。
  • SELECT YEAR(column_name) FROM table_name;:从日期中提取年份。
  • SELECT MONTH(column_name) FROM table_name;:从日期中提取月份。
#   获取当前日期,当前时间,截取日期,截取时分秒,截取年,截取月,截取日
select curdate() ,now(),date(now()),time(now()) ,year(now()),month(now()),day(now())

在这里插入图片描述

  • DATE_FORMAT() :日期格式化

具体使用:

select DATE_FORMAT(CURDATE(), '%Y%m')

select DATE_FORMAT('2023-06-20 19:10:45', '%Y%m')

在这里插入图片描述

4、数值函数

  • SELECT ABS(column_name) FROM table_name;:返回列中的绝对值。
  • SELECT ROUND(column_name, decimal_places) FROM table_name;:将数值四舍五入到指定的小数位数。
  • SELECT CEILING(column_name) FROM table_name;:向上取整。
  • SELECT FLOOR(column_name) FROM table_name;:向下取整。
  • SELECT MOD(column_name, divisor) FROM table_name;:返回两个数相除的余数。

5、条件函数

  • CASE:根据条件返回不同的值。
# CASE 使用和java的 switch 类似
select name,length(name),
	case 
		when length(name) <= 10 then '名字长度太短'   #when  条件  then 输出
		when  length(name) >10 and length(name) <= 20 then '名字长度正常'
		else '名字长度过长'
	end 'name长度判定'   # 列名
from user

在这里插入图片描述

  • COALESCE():返回第一个非空表达式的值。
# COALESCE 返回第一个非null的值,以此类推,如果都是null才返回null
select coalesce(null,0),coalesce(100,0)

在这里插入图片描述

  • NULLIF(A,B):如果两个表达式相等,则返回 NULL,否则返回第一个表达式的值。
# 如果A=B则返回null,不等于则返回第一个值
select nullif('MySQL','MySQL') as  相等,
nullif('MySQL ','sqlserver ') as 不相等  from user

在这里插入图片描述

  • IF() :类似三木表达式,
# IF()  满足条件则返回值1,不满足则返回值2
select if(1>0 , "张三","ZHANG"),if(1<0 , "张三","ZHANG")

在这里插入图片描述

二、窗口函数(OVER)

OVER的定义

OVER用于为行定义一个窗口,它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。

OVER的语法

OVER ( [ PARTITION BY column ] [ ORDER BY culumn ] )

PARTITION BY 子句进行分组;

ORDER BY 子句进行排序。

窗口函数OVER()指定一组行,开窗函数计算从窗口函数输出的结果集中各行的值。

开窗函数不需要使用GROUP BY就可以对数据进行分组,还可以同时返回基础行的列和聚合列。

OVER的用法

OVER开窗函数必须与聚合函数或排序函数一起使用,聚合函数一般指SUM(),MAX(),MIN,COUNT(),AVG() 等常见函数。排序函数一般指RANK(),ROW_NUMBER(),DENSE_RANK(),NTILE()等。

OVER在聚合函数中使用的示例

我们以SUM和COUNT函数作为示例来给大家演示。

-建立测试表和测试数据
CREATE TABLE Employee
(
ID INT PRIMARY KEY,
Name VARCHAR(20),
GroupName VARCHAR(20),
Salary INT
)
INSERT INTO Employee
VALUES(1,'小明','开发部',8000), (4,'小张','开发部',7600), (5,'小白','开发部',7000), (8,'小王','财务部',5000), (9, null,'财务部',NULL), (15,'小刘','财务部',6000), (16,'小高','行政部',4500), (18,'小王','行政部',4000), (23,'小李','行政部',4500), (29,'小吴','行政部',4700);

SUM后的开窗函数

SELECT *,
     SUM(Salary) OVER(PARTITION BY Groupname) 每个组的总工资,
     SUM(Salary) OVER(PARTITION BY groupname ORDER BY ID) 每个组的累计总工资,
     SUM(Salary) OVER(ORDER BY ID) 累计工资,
     SUM(Salary) OVER() 总工资
from Employee

结果如下:

在这里插入图片描述

其中开窗函数的每个含义不同,我们来具体解读一下:

SUM(Salary) OVER (PARTITION BY Groupname)

只对PARTITION BY后面的列Groupname进行分组,分组后求解Salary的和。

SUM(Salary) OVER (PARTITION BY Groupname ORDER BY ID)

对PARTITION BY后面的列Groupname进行分组,然后按ORDER BY 后的ID进行排序,然后在组内对Salary进行累加处理。

SUM(Salary) OVER (ORDER BY ID)

只对ORDER BY 后的ID内容进行排序,对排完序后的Salary进行累加处理。

SUM(Salary) OVER ()

对Salary进行汇总处理

COUNT后的开窗函数

SELECT *,
       COUNT(*) OVER(PARTITION BY Groupname ) 每个组的个数,
       COUNT(*) OVER(PARTITION BY Groupname ORDER BY ID) 每个组的累积个数,
       COUNT(*) OVER(ORDER BY ID) 累积个数 ,
       COUNT(*) OVER() 总个数
from Employee

返回的结果如下图:

在这里插入图片描述

后面的每个开窗函数就不再一一解读了,可以对照上面SUM后的开窗函数进行一一对照。

OVER在排序函数中使用的示例

我们对4个排序函数一一演示

-先建立测试表和测试数据
WITH t AS
(SELECT 1 StuID,'一班' ClassName,70 Score
UNION ALL
SELECT 2,'一班',85
UNION ALL
SELECT 3,'一班',85
UNION ALL
SELECT 4,'二班',80
UNION ALL
SELECT 5,'二班',74
UNION ALL
SELECT 6,'二班',80
)
SELECT * INTO Scores FROM t;
SELECT * FROM Scores

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在不破坏原有隔离状态的情况下,怎么实现网间数据安全摆渡?

随着网络技术的演进&#xff0c;网络攻击、数据窃取、数据泄露事件也愈发频繁&#xff0c;给企业造成损失和负面影响&#xff0c;企业数据防泄漏治理是大趋势&#xff0c;也是自身迫切需求。 2021年1月&#xff0c;中国农业银行因存在数据泄露风险、互联网门户网站泄露敏感信息…

数据接入体验再升级!TDengine 推出支持 MQTT 协议的数据接入功能

我们非常高兴地宣布&#xff0c;TDengine 企业版和 TDengine Cloud 正式推出重磅功能&#xff0c;这一功能主打无缝数据接入支持&#xff0c;旨在帮助用户彻底改善数据接入体验。作为一款创新性的解决方案&#xff0c;TDengine 企业版和 TDengine Cloud 可以直接将 MQTT 服务器…

使用YOLOV5训练自己的数据集时所遇到问题|PyYAML|KeyError

训练过程中&#xff1a; 1、attributeerror: module yaml has no attribute load 方法1&#xff1a; 如果另一个名为 yaml.py 的文件在 PyYaml 库之前出现在你的 sys.path 中&#xff0c;就会接收并导入该 yaml.py 文件。如将文件命名为 yaml.py。 import yaml 正在加载 ya…

<kernel>kernel 6.4 USB-之-port_event()分析

&#xff1c;kernel&#xff1e;kernel 6.4 USB-之-port_event()分析 kernel 6.4 USB系列文章如下&#xff1a; &#xff1c;kernel&#xff1e;kernel 6.4 USB-之-hub_event()分析 &#xff1c;kernel&#xff1e;kernel 6.4 USB-之-port_event()分析 本文是基于linux kerne…

把握数据要素,做数字化时代的弄潮儿

截至2022年6月&#xff0c;我国网民规模已经达到了10.51亿&#xff0c;人均上网时间达到了每周29.5个小时&#xff0c;并且这部分人群使用手机上网的比例为99.6%。如果把工作、睡眠以及其他的必要的时间算上的话&#xff0c;可以发现通过手机上网已经成为了人们日常中的一部分。…

渗透测试面试题汇总(附答题解析+配套资料)

注&#xff1a;所有的资料都整理成了PDF&#xff0c;面试题和答案将会持续更新&#xff0c;因为无论如何也不可能覆盖所有的面试题。 一、思路流程 1、信息收集 a、服务器的相关信息&#xff08;真实ip&#xff0c;系统类型&#xff0c;版本&#xff0c;开放端口&#xff0c;…

Maven方式构建SpringBoot项目

目录 1、创建maven项目 2、添加springboot相关依赖 3、配置启动端口 4、修改APP文件 5、配置controller 6、启动应用 1、创建maven项目 项目如下&#xff1a; 2、添加springboot相关依赖 <parent><groupId>org.springframework.boot</groupId><arti…

iPhone电池缺陷落定,赔偿用户5亿美元逃不掉了

距离 iPhone 15 系列发布还有刚好一个月&#xff0c;大家准备好了吗&#xff1f; 钛合金边框、更好的相机 以及 Type-C 可能会成为一部分用户换机的理由。 当然这部分人中&#xff0c;肯定还有因为老机子电池不耐用了这一点的。 这可不&#xff0c;iPhone 电池健康度问题前不…

leetcode350. 两个数组的交集 II

简单题&#xff0c;10分钟秒杀 题目&#xff1a; 给你两个整数数组 nums1 和 nums2 &#xff0c;请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数&#xff0c;应与元素在两个数组中都出现的次数一致&#xff08;如果出现次数不一致&#xff0c;则考虑取较小值…

前端常用算法(一):防抖+节流

目录 第一章 防抖 1.1 防抖&#xff08;debounce&#xff09;简介 1.2 应用场景 1.3 实现思路 1.4 手撕防抖代码 第二章 节流 2.1 节流&#xff08;throttle&#xff09;简介 2.2 应用场景 2.3 实现思路 2.4 手撕节流代码&#xff08;方法&#xff1a;时间戳和计时器…

【100天精通python】Day38:GUI界面编程_PyQT从入门到实战(中)

目录 专栏导读 4 数据库操作 4.1 连接数据库 4.2 执行 SQL 查询和更新&#xff1a; 4.3 使用模型和视图显示数据 5 多线程编程 5.1 多线程编程的概念和优势 5.2 在 PyQt 中使用多线程 5.3 处理多线程间的同步和通信问题 5.3.1 信号槽机制 5.3.2 线程安全的数据访问 Q…

高光谱 | 矿物识别和分类标签数据制作、农作物病虫害数据分类、土壤有机质含量回归与制图、木材含水量评估和制图

本课程提供一套基于Python编程工具的高光谱数据处理方法和应用案例。 本课程涵盖高光谱遥感的基础、方法和实践。基础篇以学员为中心&#xff0c;用通俗易懂的语言解释高光谱的基本概念和理论&#xff0c;旨在帮助学员深入理解科学原理。方法篇结合Python编程工具&#xff0c;…

企业如何为服务器找到合适的托管机房?

企业的服务器在业务经营中扮演着很重要的角色&#xff0c;提供可靠的数据存储和备份功能、计算能力和软件支持、网络通信连接等功能&#xff0c;是企业运行中关键的组成部分。因此&#xff0c;企业的服务器需要得到妥善的保管&#xff0c;为它们选择一个合适的托管机房十分有必…

TCP/IP---网络层

一、网络层的主要功能 1、提供了通讯过程中&#xff0c;必须要使用的另一个地址&#xff1a;逻辑IP地址【ipv4、ipv6】 2、连接不同媒介类型【内网--外网&#xff08;intra -- inter&#xff09;】 3、根据运行的不同的路由协议&#xff0c;选择不同的最佳路径 4、在选择的最好…

Chatgpt小程序源码java版实践

ChatGPT的技术和资源背景 ChatGPT是一种基于大数据的语言模型&#xff0c;通过对大量数据进行计算&#xff0c;例如语言出现的概率和适用环境等。ChatGPT所使用的语言模型参数大约有2000亿个。由于ChatGPT的计算运行需要大量的计算机资源&#xff0c;因此在工程上要实现它是非…

nginx代理文件目录、下载站点

文章目录 前言一、访问站点配置二、添加登录权限功能1.密码生成2.配置nignx 三、路径加 / 如何区分1、proxy_pass末尾有斜杠2、proxy_pass末尾无斜杠3、proxy_pass包含路径&#xff0c;且末尾有斜杠4、proxy_pass包含路径&#xff0c;末尾无斜杠 四、文件路径 alias与root区别总…

反转链表(单向链表)

声明 该系列文章仅仅展示个人的解题思路和分析过程&#xff0c;并非一定是优质题解&#xff0c;重要的是通过分析和解决问题能让我们逐渐熟练和成长&#xff0c;从新手到大佬离不开一个磨练的过程&#xff0c;加油&#xff01; 原题链接 反转链表备战技术面试&#xff1f;力…

搭建Web服务器并用cpolar发布至公网访问

本地电脑搭建Web服务器并用cpolar发布至公网访问 文章目录 本地电脑搭建Web服务器并用cpolar发布至公网访问前言1. 首先在电脑安装PHPStudy、WordPress、cpolar2. 安装cpolar&#xff0c;进入Web-UI界面3. 安装wordpress4. 进入wordpress网页安装程序5. 利用cpolar建立的内网穿…

【OpenGauss源码学习 —— 执行算子(hash join 算子)】

执行算子&#xff08;hash join 算子&#xff09; 连接算子hash join算子ExecInitHashJoin函数HashJoinState结构体TupleTableSlot 结构体JoinState结构体PlanState结构体ExecInitHashJoin函数部分代码介绍 ExecHashJoin函数调试信息 ExecEndHashJoin函数ExecReScanHashJoin函数…

Tween.js使用指南demo

案例&#xff1a; 小球的运动数字的自增 demo <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title&g…