一、flinkSql-Client
/mnt/flink-1.12.4/bin/start-cluster.sh --启动集群
/mnt/flink-1.12.4/bin/sql-client.sh embedded --进入sql客户端
二、FlinkSql函数
1、比较函数
= <> > > = < < =
注意:select null = null; 返回为null
IS NULL 、 IS NOT NULL
--非空判断
value1 IS DISTINCT FROM value2、value1 IS NOT DISTINCT FROM value2、
--不同于
value1 BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3、value1 NOT BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3、
--如:select 1 between 0 and 2 ; 返回true。默认ASYMMETRIC 表示value1在闭区间内 [ value2,value3]
string1 LIKE string2 、string1 NOT LIKE string2
--如:select 'abc' like 'a%' ; 返回true,用 '用%或_模糊数据'
string1 SIMILAR TO string2 、string1 NOT SIMILAR TO string2
--string2 为正则表达式. 但测试失败 select 'fgh34444' SIMILAR TO '[a-z][0-9]*' ; 返回的false
value1 IN ( value2 [ , value3] * ) 、value1 NOT IN ( value2 [ , value3] * ) 、
-- select 'abc' in ( 'abc' ,'e' ,'f' ) ; 返回true,要求类型必须一致( 都为字符串,或都为) 。select 1 in ( 1,2 ,3,4) ;
EXISTS ( sub-query) 、
--select EXISTS ( select 1 ) ; 返回true(自查询至少返回一行时)
value IN ( sub-query) 、value NOT IN ( sub-query)
--select 1 in ( select 1 ) ; 值等于子查询返回的行( 只限于一个值) ,返回true. select 'abc' in ( select 'abc' ) ;
2、逻辑函数
OR 、AND、NOT boolean、boolean IS FALSE、boolean IS NOT FALSE、boolean IS TRUE、boolean IS NOT TRUE、boolean IS UNKNOWN、boolean IS NOT UNKNOWN
--select null = null IS UNKNOWN; 返回true
3、算术函数
+ numeric、- numeric --返回对应的正负数字
+ - * /
% 、MOD( numeric1, numeric2)
-- select MOD( 3,2 ) ; 3 除以2的余数= 1 .仅当numeric1为负时结果为负
POWER( numeric1, numeric2)
--select POWER( 2,3 ) ; 返回2 的 3 次幂= 8.0
ABS( numeric)
--select ABS( -1) ; 返回绝对值1
CEIL( numeric) --向上取整 select CEIL( 2.3 ) ; 返回3.000000
FLOOR( numeric) --向下取整 select FLOOR( 2.3 ) ; 返回2.000000
ROUND( numeric, integer) 取整
--select ROUND( 2.3 ,1) ; 保留1位小数2.30000。
--select ROUND( 2.3 ,0) ; 保留0位小数 2.0000
TRUNCATE( numeric1, integer2)
--select TRUNCATE( 2.3 ,1) ; 保留1位小数2.30000 select TRUNCATE( 2.3 ,0) 保留0位小数 2.0000
RAND( ) --介于 0.0 (含)和 1.0 (不含)之间的伪随机双精度值
RAND( integer) --介于 0.0 (含)和 1.0 (不含)之间的伪随机双精度值。两个 RAND 函数具有相同的初始种子,它们将返回相同的数字序列。
RAND_INTEGER( integer) --介于 0 (含)和整数(不含)之间的伪随机整数值
--使用初始种子返回 0 (含)和指定值(不含)之间的伪随机整数值
UUID( ) --返回 UUID(通用唯一标识符)字符串(例如,“3d3c68f7-f608-473f-b60c-b0c44ad4cc4e”)。UUID 是使用加密强的伪随机数生成器生成的。
BIN( integer) --以二进制格式返回整数的字符串表示形式。如果整数为 NULL,则返回NULL。例如,BIN( 4 ) 返回“100”并BIN( 12 ) 返回“1100”
HEX( numeric 或 string) --以十六进制格式返回整数数值或字符串的字符串表示形式
4、字符串函数
string1 || string2 --拼接
--select 'abc' || 'def' ; 返回abcdef
CHAR_LENGTH( string) --字符个数
--select CHAR_LENGTH( 'abcdef' ) ; 返回 6
UPPER( string) --转大写
--select UPPER( 'aBc' ) ; 返回 ABC
LOWER( string) --转小写
--select LOWER( 'aBc' ) ; 返回abc
POSITION( string1 IN string2) --字串位置
--select POSITION( 'ab' in 'cdabcds' ) ; 返回3
TRIM( [ BOTH | LEADING | TRAILING ] string1 FROM string2) --默认从两边去除第一个
--select TRIM( ' abc ' from ' abcdefabc ' ) ; 返回def 。select TRIM( ' abc ' ) ; 返回abc 两边的空格都被删除
LTRIM( string) --去除左边的空格
RTRIM( string) --去除右边的空格
REPEAT( string, integer) --重复字符串整数次
--select REPEAT( 'ab' ,3) ; 返回 ababab
REGEXP_REPLACE( string1, string2, string3) --将string1中符合正则表达式的 替换为 string3
--select REGEXP_REPLACE( 'foobar' , 'oo|ar' , '' ) ; 返回 fb
OVERLAY( string1 PLACING string2 FROM integer1 [ FOR integer2 ] ) --将指定位置的字符串替换
--select OVERLAY( 'This is an old string' PLACING ' new' FROM 10 FOR 5 ) ; 返回 This is a new string --不含FROM 10
SUBSTRING( string FROM integer1 [ FOR integer2 ] ) --从指定位置截取指定长度的字串
--select SUBSTRING( 'This is an old string' FROM 10 FOR 5 ) ; 返回 n old --含FROM 10
REPLACE( string1, string2, string3) --替换
--select REPLACE( 'ababab' , 'abab' , 'z' ) ; 用z替换abab 返回zab
REGEXP_EXTRACT( string1, string2[ , integer] ) --?
--select REGEXP_EXTRACT( 'foothebar' , 'foo(.*?)(bar)' , 2 ) ; 返回 bar --正则表达式匹配组索引从 1 开始,0 表示匹配整个正则表达式
INITCAP( string) --第一个字符转换为大写,其余字符转换为小写
--select INITCAP( 'aBc' ) ; 返回 Abc
CONCAT( string1, string2,.. .) --拼接,如果任何参数为 NULL,则返回 NULL。
CONCAT_WS( string1, string2, string3,.. .) --拼接,第一个字符拼接符不为null则不为null
--select CONCAT_WS( '~' , 'AA' , NULL, 'BB' , '' , 'CC' ) ; 会报错 Illegal use of 'NULL' --但官网说会跳过null
--select CONCAT_WS( '~' , 'AA' , 'BB' , '' , 'CC' ) ; 返回“AA~BB~~CC”
LPAD( string1, integer, string2) --从string1左边填充string2到整数字符的长度。如果string1的长度小于integer,则返回string1缩短为整数字符
--LPAD( 'hi' ,4,'??' ) 返回“??hi”;LPAD( 'hi' ,1,'??' ) 返回“h”。
RPAD( string1, integer, string2) --从右边填充
--RPAD( 'hi' ,4,'??' ) 返回“hi??”,RPAD( 'hi' ,1,'??' ) 返回“h”
FROM_BASE64( string) --从string返回 base64 解码的结果;如果字符串为 NULL,则返回NULL。
--FROM_BASE64( 'aGVsbG8gd29ybGQ=' ) 返回“hello world”。
TO_BASE64( string) --从string返回 base64 编码的结果;如果字符串为 NULL,则返回NULL。
--TO_BASE64( 'hello world' ) 返回“aGVsbG8gd29ybGQ= ”。
ASCII( string) -- 返回string的第一个字符的数值
--ascii( 'abc' ) 返回 97 ( a的ascii码) ,并ascii( CAST( NULL AS VARCHAR)) 返回 NULL。
CHR( integer) --返回二进制等效于integer的 ASCII 字符.如果整数大于 255 ,我们将先得到整数除以 255 的模数,并返回模数的CHR。如果整数为 NULL,则返回NULL。
--chr( 97 ) 返回a,chr( 353 ) 返回a
DECODE( binary, string) ---使用提供的字符集('US-ASCII' 、'ISO-8859-1' 、'UTF-8' 、'UTF-16BE' 、'UTF-16LE' 、'UTF- 16' )
--报错
ENCODE( string1, string2) ; --使用指定
--select ENCODE( 'a' , 'UTF-8' ) ; --报错
INSTR( string1, string2) --返回string2在string1 中第一次出现的位置
--select INSTR( 'bcab' ,'a' ) ; 返回3
LEFT( string, integer) --从左边截取
--select LEFT( 'abc2awe' ,2) ; 返回ab
RIGHT( string, integer) --从右边截取
--select RIGHT( 'abcawe' ,3) ; 返回awe 从右边截取3个
LOCATE( string1, string2[ , integer] ) --返回string2中string1在位置integer之后第一次出现的位置。如果未找到,则返回 0
--select LOCATE( 'abcdefabc' ,'a' ,3) ; 返回0 --不符合预期
PARSE_URL( string1, string2[ , string3] )
--select parse_url( 'http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1' , 'HOST' ) ; 返回 facebook.com
REGEXP( string1, string2) --如果string1 的任何(可能为空)子字符串与 Java 正则表达式string2匹配,则返回 TRUE
REVERSE( string) --反转
--select REVERSE( 'abc' ) ; 返回cba
SPLIT_INDEX( string1, string2, integer1) --用分割符分割后取第n个字串(从0开始)
--select SPLIT_INDEX( 'abc|def|ghi' ,'|' ,2) ; 返回ghi
STR_TO_MAP( string1[ , string2, string3] ] ) --使用分隔符将string1拆分为键/值对后返回一个映射。string2是对分隔符,默认为 ',' 。而string3是键值分隔符,默认为 '='
--select STR_TO_MAP( 'a=1,b=2,c=3' ) ; 返回 { a= 1 , b = 2 , c = 3 }
--select STR_TO_MAP( 'a:1|b:2|c:3' ,'|' ,':' ) ; 返回 的结果不符合预期 { = , a = null, 1 = null, b = nu~
SUBSTR( string[ , integer1[ , integer2] ] ) --返回字符串的子字符串,从位置 integer1 开始,长度为 integer2(默认到末尾)。
--select substr( 'abc' ,1,2) ; 返回ab
5、时间函数(时间搓单位都是秒)
timeintervalunit时间单位:SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTER,或YEAR。
select REPLACE( 'hello world' , 'world' , 'flink' ) returns "hello flink" ; REPLACE( 'ababab' , 'abab' , 'z' ) returns "zab" .
select CONCAT( 'AA' , 'BB' , 'CC' ) returns "AABBCC" ;
DATE_FORMAT( timestamp, string) 此功能存在严重错误,暂时不要使用。
INTERVAL string range 使用报错
--select INTERVAL '10 00:00:00.004' DAY TO SECOND;
--select INTERVAL '1' HOUR;
--select INTERVAL '1' MINUTE;
CURRENT_DATE UTC 时区 系统日期
--select CURRENT_DATE; 返回 2021 -10-08
CURRENT_TIME UTC 时区 系统时间
--select CURRENT_TIME; 返回 09:25:28.137
CURRENT_TIMESTAMP UTC 时区 系统时间搓,TIMESTAMP 类型
--select CURRENT_TIMESTAMP; 返回 2021 -10-08T09:23:15.180 --数据不对,和时区有关系
LOCALTIMESTAMP 本地时区系统时间, TIMESTAMP 类型
--select LOCALTIMESTAMP; 返回 2021 -10-08T17:19:47.787 --时间对
LOCALTIME 系统时间字符串(HH:mm:ss)
--select LOCALTIME; 返回 17 :22:16.212
EXTRACT( timeintervalunit FROM temporal) 取日期中的年/月/日 返回整数
--select EXTRACT( DAY FROM DATE '2006-06-05' ) ; 返回 日 为 5
--select EXTRACT( MONTH FROM DATE '2006-06-05' ) ; 返回 月 为 6
--select EXTRACT( YEAR FROM DATE '2006-06-05' ) ; 返回 年 为 2006
YEAR( date) 年份
--select YEAR( TO_DATE( '2021-10-08 08:45:17' )) ; 返回2021
QUARTER( date) 几季度
--select QUARTER( TO_DATE( '2021-10-08 08:45:17' )) ; 返回4
MONTH( date) 几月
--select MONTH( TO_DATE( '2021-10-08 08:45:17' )) ; 返回 10
WEEK( date) 几周
--select WEEK( TO_DATE( '2021-10-08 08:45:17' )) ; 返回 40
DAYOFYEAR( date) 一年中的第几天
--select DAYOFYEAR( TO_DATE( '2021-10-08 08:45:17' )) ; 返回281
DAYOFMONTH( date) 一月中的第几天
--select DAYOFMONTH( TO_DATE( '2021-10-08 08:45:17' )) ; 返回8
--select DAYOFMONTH( TO_DATE( FROM_UNIXTIME( 1631061917 )) ) ; -- 结果:8
--select DAYOFMONTH( TO_DATE( FROM_UNIXTIME( UNIX_TIMESTAMP( )) )) ; --参数为DATE类型 当前时间为月份中的多少号 14 号
DAYOFWEEK( date) 一周中的第几天
--select DAYOFWEEK( TO_DATE( '2021-10-08 08:45:17' )) ; 返回6,实际是5
HOUR( timestamp) 返回小时数
--select HOUR( TIMESTAMP '2021-09-08 08:45:17' ) ; 返回 8
MINUTE( timestamp) 返回分钟数
--select MINUTE( TIMESTAMP '2021-09-08 08:45:17' ) ; 返回 45
SECOND( timestamp) 返回秒数
--select SECOND( TIMESTAMP '2021-09-08 08:45:17' ) ; 返回 17
FLOOR( timepoint TO timeintervalunit) 向下取整分钟
--select FLOOR( TIME '12:44:31' TO MINUTE) ; 返回 12 :44
CEIL( timepoint TO timeintervalunit) 向上取整分钟,回合时间点到时间单元timeintervalunit。
-- select CEIL( TIME '12:44:31' TO MINUTE) ; 返回 12 :45
( timepoint1, temporal1) OVERLAPS ( timepoint2, temporal2) 由 ( timepoint1 , temporal1 ) 和 ( timepoint2 , temporal2 ) 定义的两个时间间隔重叠,则返回 TRUE
--select ( TIME '2:55:00' , INTERVAL '1' HOUR) OVERLAPS ( TIME '3:30:00' , INTERVAL '2' HOUR) ; 返回true
--select ( TIME '9:00:00' , TIME '10:00:00' ) OVERLAPS ( TIME '10:15:00' , INTERVAL '3' HOUR) ; 返回false
DATE string 日期字符串(yyyy-MM-dd)转为 DATE 类型
--select Date '2021-09-08' ; 返回 2021 -09-08
TIME string 时间字符串转(HH:mm:ss)为 TIME 类型
--select TIME '08:45:17' ; 返回 08:45:17
TO_DATE( string1[ , string2] ) 将日期时间字符串(yyyy-MM-dd HH:mm:ss)转为 DATE 类型
--select TO_DATE( FROM_UNIXTIME( 1631061917 )) 结果为 2021 -09-08 ,因 TO_DATE 是转为日
--select TO_DATE( '2021-09-08 08:45:17' ) ; 返回 2021 -09-08
TO_TIMESTAMP( string1[ , string2] ) 将时间字符串转为 TIMESTAMP 类型
--select TO_TIMESTAMP( '2021-09-08 08:45:17' ,'yyyy-MM-dd HH:mm:ss' ) ; 返回 2021 -09-08T08:45:17 到秒
--select TO_TIMESTAMP( '2021-09-08 08:45' ,'yyyy-MM-dd HH:mm' ) ; 返回 2021 -09-08T08:45 到分钟
TIMESTAMP string 将时间字符串(“yyyy-MM-dd HH:mm:ss[ .SSS] ”的形式)转为 TIMESTAMP 类型
--select TIMESTAMP '2021-09-08 08:45:17' ; 返回 2021 -09-08T08:45:17
NOW( ) 系统时间,返回 TIMESTAMP 类型
--select NOW( ) ; 返回 2021 -10-08T08:50:01.486
UNIX_TIMESTAMP( ) 系统时间搓,返回整数
--select UNIX_TIMESTAMP( ) ; 返回 1633680986
UNIX_TIMESTAMP( string1[ , string2] ) 返回整数,时间字符串(默认情况下:yyyy-MM-dd HH:mm:ss 如果未指定)转换为 Unix 时间戳(以秒为单位)。
--select UNIX_TIMESTAMP( '2021-09-08 08:45:17' ,'yyyy-MM-dd HH:mm:ss' ) ; 返回 1631061917
FROM_UNIXTIME( numeric[ , string] ) 将整数转为时间 字符串(默认为 'yyyy-MM-dd HH:mm:ss' ) 类型
--select FROM_UNIXTIME( UNIX_TIMESTAMP( ) ,'yyy-MM-dd HH:mm' ) ; 返回 2021 -10-08 16 :28 到分钟
--select FROM_UNIXTIME( 1631061917 ) ; 返回 2021 -09-08 08:45:17
--select FROM_UNIXTIME( UNIX_TIMESTAMP( )) ; 返回当前日期 2021 -10-08 16 :18:32
--select FROM_UNIXTIME( 1631061917 ) > TIMESTAMPADD( MINUTE, -5, NOW( )) ; --结果: false
TIMESTAMPDIFF( timepointunit, timepoint1, timepoint2) 时间搓差。
--select TIMESTAMPDIFF( MINUTE,TIMESTAMP FROM_UNIXTIME( place_time/1000) , UNIX_TIMESTAMP( )) < 5 --近5分钟
--select TIMESTAMPDIFF( MINUTE, TIMESTAMP '2003-01-03 10:10:00' , TIMESTAMP '2003-01-03 10:00:00' ) ; --结果为-10 后面-前面的 分钟差.
TIMESTAMPADD( timeintervalunit, interval, timepoint) 向前/后推时间。timeintervalunit时间单位:SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTER,或YEAR。
--select TIMESTAMPADD( MINUTE, -5, NOW( )) ; --当前时间往前推5分钟: 2021 -10-08T08:33:48.108 ,但可能因时区原因有显示的时间有差异
--select TIMESTAMPADD( SECOND, -5, TO_DATE( FROM_UNIXTIME( 1631061917 )) ) ; --按 天取整后 往前推5秒结果:2021-09-07T23:59:55 .往前推5秒钟 1631061917 为 2021 -09-08 08:45:17
CONVERT_TZ( string1, string2, string3) 将日期时间格式字符串 从时区string2转换为时区string3
--select CONVERT_TZ( '1970-01-01 00:00:00' , 'UTC' , 'America/Los_Angeles' ) ; 返回 1969 -12-31 16 :00:00
6、条件函数
CASE value WHEN value1_1 THEN result1 ELSE resultZ END 满足某一个值
--select CASE 'a' WHEN 'a' THEN 1 ELSE 0 END; 返回 1
--select CASE 'b' WHEN 'a' THEN 1 ELSE 0 END; 返回 0
CASE WHEN condition1 THEN result1 ELSE resultZ END 满足某一个条件时
--select CASE WHEN 1 0 >5 THEN 1 ELSE 0 END; 返回 1
--select CASE WHEN 4 >5 THEN 1 ELSE 0 END; 返回 0
NULLIF( value1, value2) 等值判断:如果value1等于value2则返回 NULL ;否则返回value1。
--NULLIF( 5 , 5 ) 返回NULL;NULLIF( 5 , 0 ) 返回 5 。
COALESCE( value1, value2 [ , value3 ] * ) 返回第一个不为 NULL 的值
--select COALESCE( NULL, 5,3 ) ; 返回5
IF( condition, true_value, false_value)
--select IF( 1 0 >5,1 ,0) ; 返回 1
IS_ALPHA( string) 字符串中的所有字符都是字母,则返回真,否则返回假。
--select IS_ALPHA( 'abc' ) ; 返回true
--select IS_ALPHA( 'abc1' ) ; 返回false
IS_DECIMAL( string) 如果string可以解析为有效数字,则返回 true ,否则返回 false。
--select IS_DECIMAL( '123' ) ; 返回true
--select IS_DECIMAL( 'abc1' ) ; 返回false
IS_DIGIT( string) 如果字符串中的所有字符都是数字,则返回真,否则返回假。
--select IS_DIGIT( '123' ) ; 返回true
--select IS_DIGIT( 'abc1' ) ; 返回false
7、类型强转函数
CAST( value AS type ) 强转
--select CAST( '42' AS INT) ; 返回 42 ;
--select CAST( NULL AS VARCHAR) ; 返回 VARCHAR 类型的 NULL。
8、集合函数
array [ value1,value2.. . ] 构建 数组
数组名[ n] 取数组的第n个元素。索引从 1 开始
--select arr[ 2 ] from ( select array [ 1,4 ,5] arr) t; 返回 4
--select array [ 'a' ,'b' ,'c' ] ; 返回 [ a, b, c]
map [ key1,value1,key2,value2] 构建map集合
集合名[ key值] 取key对应的value
--select mp[ 2 ] from ( select map [ 1 ,'a' ,2,'b' ] mp) t; 返回 b
--select map [ 1 ,'a' ,2,'b' ] ; 返回 { 1 = a, 2 = b}
CARDINALITY( map) 返回map 中的条目数 。
--select CARDINALITY( map [ 1 ,'a' ,2,'b' ] ) ; 返回 2
CARDINALITY( array) 返回array 中的元素个数。
select CARDINALITY( array [ 1,2 ,3,0,0] ) ; 返回5
ELEMENT( array) 返回数组的唯一元素(其基数应为 1 );如果数组为空,则返回 NULL 。如果数组有多个元素,则抛出异常。
--select ELEMENT( array [ 1,2 ,3,0,0] ) ; --执行失败
--select ELEMENT( array [ 2 ] ) ; 返回2
9、值访问函数
tableName. compositeType. field 按名称从 Flink 复合类型(例如,Tuple、POJO)返回字段的值。
tableName. compositeType. * 返回 Flink 复合类型(例如,Tuple、POJO)的平面表示,将其每个直接子类型转换为单独的字段。在大多数情况下,平面表示的字段与原始字段的命名类似,但使用美元分隔符(例如,mypojo$mytuple$f0)。
10、分组功能
GROUP_ID( ) 返回唯一标识分组键组合的整数。
GROUPING( expression1 [ , expression2] * )
GROUPING_ID( expression1 [ , expression2] * )
返回给定分组表达式的位向量。
11、哈希函数
MD5( string) 以 32 个十六进制数字的字符串形式返回string的 MD5 哈希值;如果字符串为 NULL ,则返回NULL 。
SHA1( string) 以 40 个十六进制数字的字符串形式返回string的 SHA- 1 哈希值;如果字符串为 NULL ,则返回NULL 。
SHA224( string) 以 56 个十六进制数字的字符串形式返回string的 SHA- 224 哈希值;如果字符串为 NULL ,则返回NULL 。
SHA256( string) 以 64 个十六进制数字的字符串形式返回string的 SHA- 256 哈希值;如果字符串为 NULL ,则返回NULL 。
SHA384( string) 以 96 个十六进制数字的字符串形式返回string的 SHA- 384 哈希值;如果字符串为 NULL ,则返回NULL 。
SHA512( string) 以 128 个十六进制数字的字符串形式返回string的 SHA- 512 哈希值;如果字符串为 NULL ,则返回NULL 。
SHA2( string, hashLength) 使用 SHA- 2 系列散列函数(SHA- 224 、SHA- 256 、SHA- 384 或 SHA- 512 )返回散列。第一个参数字符串是要散列的字符串,第二个参数hashLength是结果的位长(224 、256 、384 或 512 )。如果string或hashLength为 NULL ,则返回NULL
12、聚合函数
COUNT ( [ ALL ] expression | DISTINCT expression1 [ , expression2] * ) 默认情况下或使用 ALL ,返回表达式不为 NULL 的输入行数。对每个值的一个唯一实例使用 DISTINCT 。
COUNT ( * ) COUNT ( 1 ) 返回输入行数。
AVG ( [ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL ,返回所有输入行中表达式的平均值(算术平均值)。对每个值的一个唯一实例使用 DISTINCT 。
SUM ( [ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL ,返回所有输入行的表达式总和。对每个值的一个唯一实例使用 DISTINCT 。
MAX ( [ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL ,返回所有输入行中表达式的最大值。对每个值的一个唯一实例使用 DISTINCT 。
MIN ( [ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL ,返回所有输入行中表达式的最小值。对每个值的一个唯一实例使用 DISTINCT 。
STDDEV_POP( [ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL ,返回所有输入行中表达式的总体标准偏差。对每个值的一个唯一实例使用 DISTINCT 。
STDDEV_SAMP( [ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL ,返回所有输入行中表达式的样本标准偏差。对每个值的一个唯一实例使用 DISTINCT 。
VAR_POP( [ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL ,返回所有输入行中表达式的总体方差(总体标准差的平方)。对每个值的一个唯一实例使用 DISTINCT 。
VAR_SAMP( [ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL ,返回所有输入行中表达式的样本方差(样本标准差的平方)。对每个值的一个唯一实例使用 DISTINCT 。
COLLECT( [ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL ,返回跨所有输入行的多组表达式。NULL 值将被忽略。对每个值的一个唯一实例使用 DISTINCT 。
VARIANCE( [ ALL | DISTINCT ] expression) VAR_SAMP( ) 的同义词。仅在眨眼规划器中受支持。
RANK( ) 返回值在一组值中的排名。结果是 1 加上分区顺序中当前行之前或等于当前行的行数。这些值将在序列中产生间隙。仅在眨眼规划器中受支持。
DENSE_RANK( ) 返回值在一组值中的排名。结果是一加先前分配的等级值。与函数 rank 不同,dense_rank 不会在排名序列中产生间隙。仅在眨眼规划器中受支持。
ROW_NUMBER( ) 根据窗口分区内行的顺序,为每一行分配一个唯一的序列号,从一开始。
ROW_NUMBER 和 RANK 相似。ROW_NUMBER 按顺序对所有行进行编号(例如 1 、2 、3 、4 、5 )。RANK 为平局提供相同的数值(例如 1 、2 、2 、4 、5 )。仅在眨眼规划器中受支持。
LEAD( expression [ , offset ] [ , default ] ) 返回窗口中当前行之前偏移第 th 行处的expression值。的默认值的偏移是1 和默认值默认为NULL 。仅在眨眼规划器中受支持。
LAG( expression [ , offset ] [ , default ] ) 返回窗口中当前行后偏移第 th 行处的expression值。的默认值的偏移是1 和默认值默认为NULL 。 仅在眨眼规划器中受支持。
FIRST_VALUE( expression) 返回一组有序值中的第一个值。 仅在眨眼规划器中受支持。
LAST_VALUE( expression) 返回一组有序值中的最后一个值。仅在眨眼规划器中受支持。
LISTAGG( expression [ , separator] ) 连接字符串表达式的值并在它们之间放置分隔符值。字符串末尾不添加分隔符。分隔符的默认值为“, ”。仅在眨眼规划器中受支持。