Leetcode编程---MySQL函数使用合集

日期相差1天

select DATEDIFF(date1, date2)=1                                      即:date1-date2=1

select DATE_ADD(date1, INTERVAL 1 DAY)=date2          即:date1+1=date2 

select DATE_SUB(date1, INTERVAL 1 DAY)=date2          即:date1-1=date2

select TIMESTAMPDIFF(HOUR, date1, date2)                  即:date2-date1=24

例如:SELECT TIMESTAMPDIFF(HOUR, '2023-04-15', '2023-04-16')=24     返回:1

保留2位小数

SELECT FORMAT(12345.6789, 2)                                   格式化四舍五入

SELECT ROUND(12345.6789, 2)                                     四舍五入

SELECT TRUNCATE(12345.6789, 2)                               直接舍弃

SELECT CONVERT(12345.6789, DECIMAL(10, 2))        小数部分四舍五入

MySQL8.0窗口函数

cume_dist() 计算一组值中一个值的累计分布
dense_rank() 根据order by子句为分区中的每一行分配一个排名。相同的排名分配给具有相等值的行。如果行具有相同的排名,则排名值序列中将没有间隙,例如:1,1,2。
rank() dense_rank()函数相似,不同之处在于当两行或更多行具有相同的排名时,排名值序列中存在间隙,例如:1,1,3。
row_number() 为分区中的每一行分配一个顺序整数排名
first_value 返回相对于窗口框架第一行的指定表达式的值。
log() 返回分区中当前行之前的第N行的值。如果不存在前一行,则返回NULL
last_value() 返回对于窗口框架中最后一行的指定表达式的值。
lead() 返回分区中当前行之后的第N行的值。如果不存在后续行,则返回NULL。
nth_value() 从窗口框架的第N行返回参数的值。
ntle() 将每个窗口分区的行分配到指定数量的排名组中。
percent_rank() 计算分区或结果集中行的百分数排名。

MySQL支持的窗口函数分为以下几类:

  • 序号函数:row_number() / rank() / dense_rank()
  • 分布函数:percent_rank() / cume_dist()
  • 前后函数:lag() / lead()
  • 头尾函数:first_value() / last_value()
  • 其他函数:nth_value() / nfile()

例如:row_number() over(partition by 字段A order by 字段B)

字符串的拼接 

concat函数是将多个字段或字符串拼接为一个字符串;但是字符串之间没有任何分隔;
concat(str1,str2,...),如果拼接的字段中有一个为null,则结果为null。

concat_ws函数将多个字段或字符串拼接为一个字符串,且字符串直接可以指定分隔符;
concat_ws(separator,str1,str2,...),不受字段null的影响。

group_concat函数可以将多行字段数据合并为一行;且内容之间可以指定分隔符;
group_concat([DISTINCT] expr [,expr ...]
                         [ORDER BY {unsigned_integer | col_name | expr}
                         [ASC | DESC] [,col_name ...]]
                         [SEPARATOR str_val]
                         [LIMIT {[offset,] row_count | row_count OFFSET offset}]),默认以逗号分隔

你可能感兴趣的:(Leetcode,在线编程,leetcode,算法,mysql)