1、聚合函数
它对其应用的每个行集返回一个值。
- COUNT(*) 返回表中的行数(包括有NULL值的列)。
- COUNT(表达式) 返回表达式中非NULL值的数量。可用于数字和字符列。
- AVG(表达式) 返回表达式中所有的平均值。仅用于数字列并自动忽略NULL值。
- MAX(表达式) 返回表达式中的最大值,忽略NULL值。可用于数字、字符和日期时间列。
- MIN(表达式) 返回表达式中的最小值,忽略NULL值。可用于数字、字符和日期时间列。
- SUM(表达式) 返回表达式中所有的总和,忽略NULL值。仅用于数字列。
2、数字函数
- ABS(num_expr) 返回数值表达式的绝对值。
- CEILING(num_expr) 返回大于或等于数值表达式的最小整数。
- FLOOR(num_expr) 返回小于或等于数值表达式的最大整数。
3、日期函数
- current_date() 当前系统日期:格式:"yyyy-MM-dd"
- current_timestamp() 当前系统时间戳:格式:"yyyy-MM-dd HH:mm:ss.ms"
- unix_timestamp() 当前系统时间戳:格式:距离1970年1月1日0点的秒数;简单说:是将一个字符串,变为了一个时间戳
- from_unixtime()时间戳转日期函数:根据时间戳,指定输出日期的格式如(yyyy/MM/dd)、(yyyy-MM-dd);简单说:是将时间戳变为了一个字符串
注:from_unixtime 换算的时间出来之后,和真实的时间相差 8 小时,所以要+8 小时的秒值from_unixtime(1724722412+8*3600) - datediff() 计算时间差函数(可出现负值):例:select datediff('2024-01-01','2024-02-01')
- year(年份)、month(月份)、day(天数)、hour(小时数)、minute(分钟数)、second(秒数) 日期时间分量函数
- date_add()日期-加、date_sub()日期-减
4、字符串函数
- SUBSTR("要从中提取子字符串的原始字符串",子字符串开始的位置,要提取的子字符串的长度)
5、开窗函数
- ROW_NUMBER(): 为每一行分配一个唯一的整数值,通常用于对结果集进行排序或分页。
- RANK(): 计算每一行的排名,如果有相同的值,则会跳过相同的排名并产生相同的排名值。
- DENSE_RANK(): 类似于RANK()函数,但是不会跳过相同的排名,而是按照连续的顺序分配排名值。
- NTILE(n): 将结果集分成n个相等大小的桶,并为每一行分配一个对应的桶号。
- LAG(column, offset): 获取当前行之前偏移量为offset的行的某个列的值。可以用于计算当前行与前一行的差异。
- LEAD(column, offset): 获取当前行之后偏移量为offset的行的某个列的值。可以用于计算当前行与后一行的差异。
- PARTITION BY:将数据集分成若干组,每个组是一个窗口。不使用
PARTITION BY
时,默认整个数据集是一个窗口。 - ORDER BY:在每个窗口内定义行的排序方式。如果不指定
ORDER BY
,则窗口内的行是无序的。
- 这些聚合函数可以与开窗函数一起使用:SUM(), AVG(), MIN(), MAX()
DISTINCT
是 SQL 中的一个关键字,用于从表中选择唯一的记录。它可以消除重复的行,只返回唯一的值。