SQL Functions(函数)

概述

参考:

内置函数

参考:

函数名功能启用版本弃用版本
REPLACE()替换掉指定字符串
REGEXP_REPLACE()替换掉使用正则表达式匹配到的字符串8.0.4
SUBSTRING_INDEX()从指定出现次数的分隔符之前的字符串中返回子字符串

聚合函数

参考:

Aggregate Function(聚合函数) 通常与 group by 关键字一起使用,用于将值进行分组。

NameDescriptionIntroduced
AVG()Return the average value of the argument
BIT_AND()Return bitwise AND
BIT_OR()Return bitwise OR
BIT_XOR()Return bitwise XOR
COUNT()Return a count of the number of rows returned
COUNT(DISTINCT)Return the count of a number of different values
GROUP_CONCAT()Return a concatenated string
JSON_ARRAYAGG()Return result set as a single JSON array5.7.22
JSON_OBJECTAGG()Return result set as a single JSON object5.7.22
MAX()Return the maximum value
MIN()Return the minimum value
STD()Return the population standard deviation
STDDEV()Return the population standard deviation
STDDEV_POP()Return the population standard deviation
STDDEV_SAMP()Return the sample standard deviation
SUM()Return the sum
VAR_POP()Return the population standard variance
VAR_SAMP()Return the sample variance
VARIANCE()Return the population standard variance

GROUP BY

参考:

group by 可以脱离聚合函数单独使用,此时不在 group by 分组的列将会取其中第一行的值。 如果想要对数据进行分组后取到最新的值,还需要使用 row_number() 函数(8.0+版本),或者某些分组编号功能(此时编号为 1 的就是每组最新的值)。

HAVING

having 与 group by 之间的用法,暂时找不到一个可以描述清楚的文章,但是事实是,having 可以单独使用,并在外层再套一个 select 后执行 group by 以实现分组后取最新值的效果。

select
    *
from
    (
        SELECT

        FROM
            t_diversion diversion
        WHERE
            diversion.is_deleted = 0
        HAVING
            1
        ORDER BY
            diversion.updated_at desc
    ) t
GROUP BY
    t.datalakeName,
    t.privateNetName

此时可以取到 diversion 表中,按照 datalakeName 和 privateNetName 分组后,每组中最新的一条数据。