[GBase 8s 教程]GBase 8s 常用函数、表达式

聚集函数

函数 返回类型 描述 示例 结果
COUNT(*) 数值 返回行数 COUNT(*) 100
COUNT(UNIQUE col)
COUNT(DISTINCT col)
数值 返回去重后的行数(忽略NULL行) COUNT(UNIQUE col1) 50
COUNT(col) 数值 返回行数 COUNT(col1) 100
AVG(col/expr) 数值 返回表达式或指定的列的数值平均值 AVG(col1) 64
AVG(UNIQUE col)
AVG(DISTINCT col)
数值 返回指定的列中唯一值的数值平均值 AVG(UNIQUE col1) 61
MAX(col/expr) 数值 返回指定的列或表达式中的最大值 MAX(col1) 100
MIN(col/expr) 数值 返回指定的列或表达式中的最小值 MIN(col1) 10
SUM(col/expr) 数值 返回指定的列或表达式中的数值总和 SUM(col1) 5050
RANGE(col) 数值 返回数值列表达式参数的值的范围 RANGE(col1) 99
STDEV(col) 数值 计算数据集的标准差 STDEV(col1) 200
VARIANCE(col) 数值 总体方差的估计值,即标准差的平方 VARIANCE(col1) 40000

示例:
表数据中有7行,内容如下:

ID COL1
1 2
2 2
3 2
4 3
5 3
6 4
7 NULL

函数对COL1字段的操作结果为:

函数 结果 函数 结果
COUNT (*) 7 MAX 4
COUNT (DISTINCT col1) 3 MAX(DISTINCT col1) 4
COUNT (ALL col1) 6 MIN 2
COUNT ( col1 ) 6 MIN(DISTINCT col1) 2
AVG 2.66666666666667 RANGE 2
AVG (DISTINCT col1) 3.00000000000000 SUM 16
STDEV 0.74535599249993 SUM(DISTINCT col1) 9
VARIANCE 0.55555555555556

代数函数

函数 返回类型 描述 示例 结果
ABS(col/expr) 数值 取绝对值 ABS(-10) 10
CEIL(col/expr) 数值 返回大于或等于它的单个参数的最小整数 CEIL(4.3) 5
FLOOR(col/expr) 数值 返回小于或等于它的单个参数的最大整数 FLOOR(4.3) 4
GREATEST(col/expr) 数值 返回表达式的列表中的最大值 GREATEST(col1, col2, …colN) 100
LEAST(col/expr) 数值 返回表达式的列表中的最小值 LEAST(col1, col2, …colN) 1
MOD(expr1,expr2) 数值 取余数(模),即expr1%expr2 MOD(5,2) 1
POW(expr1,expr2) 数值 expr1的expr2次幂值 POW(3,2) 9
ROOT(expr1,expr2) 数值 expr1的开expr2次方根 ROOT(9,2) 3
SQRT(expr) 数值 平方根,等于ROOT的expr2为2 SQRT(9) 3
ROUND(expr1,expr2) 数值
日期
指定expr2精度的四舍五入 ROUND(3.5,0)
round(today,‘MONTH’)
4
2020-05-01
TRUNC(expr1,expr2) 数值
日期
指定expr2精度截断 TRUNC(3.5,0)
trunc(today,‘MONTH’)
3
2020-05-01

CARDINALITY函数

函数 返回类型 描述 示例 结果
CARDINALITY(collection_col) 数值 返回集合列(SET、MULTISET、LIST)中元素的数目 CARDINALITY(set_col) 5

SQLCODE 函数(SPL)

函数 返回类型 描述 示例 结果
SQLCODE 数值 将当前 SPL 例程已执行了的最近执行的(不论静态的还是动态的)SQL 语句的 sqlca.sqlcode 值返回到它的调用上下文。仅在游标的上下文中使用 SQLCODE

DBINFO函数

函数 返回类型 描述 示例 结果
DBINFO(‘dbspace’, tblspace_num) 文本 返回指定表partnum所在的dbspace空间名称 dbinfo(‘dbspace’, 6291458) datadbs01
DBINFO(‘sqlca.sqlerrd1’) 数值 返回提供插入到表内的最后的 serial 值的单个整数 DBINFO(‘sqlca.sqlerrd1’) 1
DBINFO(‘sqlca.sqlerrd2’) 数值 返回提供 SELECT、INSERT、DELETE、UPDATE、EXECUTE PROCEDURE 和 EXECUTE FUNCTION 语句处理了的行的数目的单个整数 DBINFO(‘sqlca.sqlerrd2’) 10
DBINFO(‘sessionid’) 数值 返回当前会话ID DBINFO(‘sessionid’) 36
DBINFO(‘cdrsession’) 布尔值 检测是否执行 INSERT、UPDATE 或 DELETE 语句作为复制的事务的一部分 DBINFO(‘cdrsession’) 0
DBINFO(‘dbname’) 文本 返回当前会话使用的库名 DBINFO(‘dbname’) testdb
DBINFO(‘dbhostname’) 文本 返回数据库服务器的主机名称 DBINFO(‘dbhostname’) localhost
DBINFO(‘version’, ‘server-type’) 文本 数据库服务器的类型 DBINFO(‘version’, ‘server-type’) GBase Server Version
DBINFO(‘version’, ‘major’) 文本 当前数据库服务器版本的主要版本号 DBINFO(‘version’, ‘major’) 12
DBINFO(‘version’, ‘minor’) 文本 当前数据库服务器版本的次要版本号 DBINFO(‘version’, ‘minor’) 10
DBINFO(‘version’, ‘os’) 文本 在版本字符串内的操作系统标识符 DBINFO(‘version’, ‘os’) F
DBINFO(‘version’, ‘level’) 文本 当前数据库服务器版本的临时发布级别 DBINFO(‘version’, ‘level’) C1G1AEE
DBINFO(‘version’, ‘full’) 文本 oninit -V 返回的完整的版本字符串 DBINFO(‘version’, ‘full’) GBase Server Version 12.10.FC4G1AEE
DBINFO(‘serial8’) 数值 返回提供插入到表内的最后的 serial8 值的单个整数 DBINFO(‘serial8’) 1
DBINFO(‘bigserial’) 数值 返回提供插入到表内的最后的 bigserial 值的单个整数 DBINFO(‘bigserial’) 1
DBINFO(‘get_tz’) 文本 回展示当前会话的时区的 $TZ 字符串 DBINFO(‘get_tz’)
DBINFO(‘utc_current’) 数值 展示在 1970-01-01 00:00:00+00:00 与当前 SQL 语句开始执行时刻之间已消耗了的秒数的整数值 DBINFO(‘utc_current’) 1588043111
DBINFO(‘utc_to_datetime’, expr) 日期时间 UTC 秒数返回到服务器会生成的 DATETIME 值 DBINFO(‘utc_to_datetime’, 1588043111) 2020-04-27 23:05:11

加密解密函数

函数 返回类型 描述 示例 结果
ENCRYPT_TDES(data [,password [, hint]]) 文本 使用TDES加密,指定密码,提示信息 ENCRYPT_TDES( “1234567890123456”, “simple password”)
ENCRYPT_AES(data [,password [, hint]]) 文本 使用AES加密,指定密码,提示信息 ENCRYPT_AES( “1234567890123456”, “simple password”)
DECRYPT_CHAR(encrypted_data [, password]) 文本 解密 DECRYPT_CHAR( ‘myHeIBAAAAAAAAAAOA’, ‘simple password’)
DECRYPT_BINARY(encrypted_data [, password]) 文本 解密
GETHINT(encrypted_data) 文本 获取提示信息 gethint(‘myHeIBAAAAAAAAAAOA’)
MD5(data) 文本 MD5值 md5(‘test’) 098f6bcd4621d373cade4e832627b4f6

指数和对数函数

函数 返回类型 描述 示例 结果
EXP(expr) 数值 返回数值表达式的指数 EXP(10) 22026.46579481
LN(expr) 数值 是 LOGN 函数的别名,返回数值参数的自然对数 LN(10) 2.302585092994
LOG10(expr) 数值 返回以 10 为基数的对数 LOG10(10) 1.000000000000
LOGN(expr) 数值 返回数值参数的自然对数 LOGN(10) 2.302585092994

NVL2函数

函数 返回类型 描述 示例 结果
NVL2(expr, result1, result2) 当第一个参数不为 NULL 时,返回第二个参数。如果第一个参数为 NULL,则返回第三个参数 nvl2(null::int,2,3) 3

HEX函数

函数 返回类型 描述 示例 结果
HEX(expr) 16进制 返回整数表达式的十六进制编码 hex(6291458) 0x00600002

长度函数

函数 返回类型 描述 示例 结果
LENGTH(expr)
LEN(expr)
数值 返回指定表达式的字节长数(截断末尾空格) length('abcd ') 4
OCTET_LENGTH(expr) 数值 返回字符列中的字节数,包括任何末尾的空格 octet_length('abcd ') 8
CHAR_LENGTH(expr)
CHARACTER_LENGTH(expr)
数值 返回在它的参数中的逻辑字符的数目 CHAR_LENGTH(‘南大通用’) 4

SIGN函数

函数 返回类型 描述 示例 结果
SIGN(expr) 数值 如果参数小于零,则返回 -1。如果参数等于零,则返回 0。如果参数大于零,则返回 1。

智能大对象函数

函数 描述 示例
FILETOBLOB(‘pathname’,‘file_destination’ [, ‘table’, ‘column’]) 为存储在指定的操作系统文件中的数据创建 BLOB 值 FILETOBLOB(‘C:\tmp\photos.xxx’, ‘client’, ‘candidate’, ‘cand_photo’)
FILETOCLOB(‘pathname’,‘file_destination’ [, ‘table’, ‘column’]) 为存储在操作系统文件中的数据值创建 CLOB
LOTOFILE(lobcol,‘pathname’,‘file_destination’) 将智能大对象复制到操作系统文件 LOTOFILE(blob_col, ‘C:\tmp\photo.gif!’, client)
LOCOPY(lobcol [, ‘table’, ‘column’]) 创建智能大对象的一个副本 LOCOPY(resume, ‘candidate’, ‘resume’)

时间日期函数

函数 返回类型 描述 示例 结果
ADD_MONTHS(date/datetime, expr) DATE
DATETIME
返回月份增加后的日期时间值 ADD_MONTHS(today, -10) 2019-07-08
今天2020-05-08
MONTHS_BETWEEN(date /datetime, date/datetime) 数值 返回两个日期时间的月份差 MONTHS_BETWEEN(MDY(5, 6,2020), MDY(5, 1, 2018)) 24.1612903225806
DAY(date/datetime) 数值 返回第几天 DAY(today) 8 今天2020-05-08
MONTH(date/datetime) 数值 返回月份 MONTH(today) 5 今天2020-05-08
YEAR(date/datetime) 数值 返回年份 YEAR(today) 2020 今天为2020-05-08
WEEKDAY(date/datetime) 数值 返回当周几 WEEKDAY(today) 5 今天为2020-05-08周五, 周日返回为0
QUARTER(date/datetime) 数值 返回季度值 QUARTER(today) 2 今天2020-05-08
DATE(date_string) DATE 返回字符串日期 date(‘2020-05-08’) 2020-05-08
TODAY DATE 返回当前日期的日期值 TODAY 2020-05-08
CURRENT [first TO last] DATETIME 返回当时日期的日期时间值 CURRENT YEAR TO SECOND 2020-05-08 21:22:09
SYSDATE [first TO last] DATETIME 返回当时日期的日期时间值 SYSDATE YEAR TO SECOND 2020-05-08 21:22:09
MDY(Month,Day,Year) DATE 返回指定的日期值 MDY(5,8,2020) 2020-05-08
DATETIME(date/datetime) first TO last DATETIME 返回表达式代表的日期时间值 datetime(2020-05-08 20:10:50) year to second 2020-05-08 20:10:50
INTERVAL(date/datetime) first TO last INTERVAL 返回表达式代表的间隔值 interval(3 03:04:05) day to second 3 03:04:05
EXTEND(date/datetime,[first TO last]) DATETIME 返回经过表达式调整的日期时间值 extend(current year to second, hour to second) 21:33:06
LAST_DAY(date/datetime) DATE
DATETIME
返回指定月的最后一天的日期 LAST_DAY(today) 2020-05-31
NEXT_DAY(date/datetime, dayexpr) DATE
DATETIME
返回指定日期的下一个dayexpr next_day(today,‘FRI’) 2020-05-15
今天2020-05-08周六
TO_CHAR(date/datetime, datetime_format) 字符 返回格式化的字符串 TO_CHAR(today, ‘yyyymmdd’) 20200508
TO_DATE(expr, datetime_format) DATETIME 返回格式化的日期时间值 TO_DATE(‘20200508’, ‘yyyymmdd’) 2020-05-08 00:00:00
GBASE_TO_CHAR(date/ datetime, datetime_format) 字符 返回格式化的字符串 GBASE_TO_CHAR(today, ‘%Y-%m-%d’) 2020-05-08
GBASE_TO_DATE(expr, datetime_format) DATETIME 返回格式化的日期时间值 GBASE_TO_DATE(‘2020-05-08’, ‘%Y-%m-%d’) 2020-05-08 00:00:00

TO_NUMBER函数

函数 返回类型 描述 示例 结果
TO_NUMBER (expr) 数值 将表示数值值的数值或字符表达式转换为 DECIMAL 数据类型 TO_NUMBER(‘RMB100.00’) 100

三角函数

函数 返回类型 描述 示例 结果
COS(expr) 数值 返回弧度表达式的余切 COS(RADIANS(60)) 0.5
COSH(expr) 数值 返回所需要的参数的双曲余弦,在此,该参数是以弧度表示的角度 COSH(RADIANS(60)) 1.600286857702386
SIN(expr) 数值 返回您指定作为它的弧度表达式参数的角的正弦 SIN(RADIANS(60)) 0.8660254037844386
SINH(expr) 数值 返回参数的双曲正弦,在此,该参数是以弧度表示的角 SINH(RADIANS(60)) 1.2493670505239751
TAN(expr) 数值 返回它的弧度表达式参数的正切的值 TAN(RADIANS(60)) 1.7320508075688767
TANH(expr) 数值 返回参数的双曲正切,该参数是以弧度表示的角 TANH(RADIANS(60)) 0.7807144353592677
ACOS(expr) 数值 返回数值表达式的反余弦 ACOS(-0.73) 2.3891182774264563
ACOSH(expr) 数值 返回指定的数值输入的双曲反余弦 ACOSH(1.73 1.1447644052982224
ASIN(expr) 数值 返回数值表达式参数的反正弦 ASIN(-0.73) -0.8183219506315598
ASINH(expr) 数值 返回指定的数值输入的反双曲正弦 ASINH(-0.73) -0.6770703319308357
ATAN(expr) 数值 返回数值表达式的反正切 ATAN(-0.73) -0.6305777572149348
ATANH(expr) 数值 返回指定的数值输入的反双曲正切 ATANH(-0.73) -0.928727364246725
ATAN2(expr1, expr2) 数值 计算与 (x, y) 相关的极坐标 (r, q) 的角度分量 ATAN2(4,5) 0.6747409422235526
DEGRESS(expr) 数值 将表示弧度数值的表达式或主变量的值转换为等同的角度值 DEGREES(3.1415926535897931) 180
RADIANS(expr) 数值 将表示角度值的表达式或主变量转换为等同的弧度值 RADIANS(180) 3.1415926535897931

字符串操纵函数

函数 返回类型 描述 示例 结果
expr1 || expr2 字符 连接两个表达式,如果其中有一个表达式为NULL,返回NULL ‘GB’ || ‘ase’ || ’ 8s’ GBase 8s
CONCAT(expr1, expr2) 字符 连接两个表达式,仅允许两个表达式,如果其中有一个表达式为NULL,返回NULL CONCAT(CONCAT(‘GB’,‘ase’),’ 8s’) GBase 8s
ASCII(char_expr) 数值 返回指定字符的ASCII码值 ASCII(‘G’) 71
TRIM([[BOTH|TRAILING|LEADING]pad_char FROM] expr) 字符 从字符串移除指定的开头或末尾的填充字符 TRIM(’#’ from ‘###GBase 8s###’) GBase 8s
LTRIM(expr [, pad_char]) 字符 从字符串移除指定的开头的填充字符 LTRIM(’###GBase 8s###’,’#’) GBase 8s###
RTRIM(expr [, pad_char]) 字符 从字符串移除指定的末尾的填充字符 RTRIM(’###GBase 8s###’,’#’) ###GBase 8s
SPACE(expr) 字符 填充expr个空格 SPACE(4)
REVERSE(expr) 字符 接受字符表达式作为它的参数,并返回同样长度的字符串,但颠倒每个逻辑字符的顺序位置 REVERSE(‘南大通用’) 用通大南
REPLACE(source_str, old_str [, new_str]) 字符 以不同的字符new_str替换源字符串内指定的字符old_str REPLACE(‘gbase 8s’, ‘gb’, ‘GB’) GBase 8s
LPAD(source_str, length [, pad_str]) 字符 返回 source_string 的一个副本,左填充达到由 length 指定的总字符数 LPAD(‘南大通用’, 7, ‘++’) +++南大通用
RPAD(source_str, length [, pad_str]) 字符 返回 source_string 的一个副本,右填充达到由 length 指定的总字符数 RPAD(‘南大通用’, 7, ‘++’) 南大通用+++
CHR(expr) 字符 返回ASCII码值expr对应的字符 CHR(71) G
WM_CONCAT(expr / col) 字符 聚集函数,返回指定表达式或者字段的值拼接 WM_CONCAT(col1) 1,2,3,4
WM_CONCAT_TEXT(expr / col) 字符 聚集函数,返回指定表达式或者字段的值拼接,返回字段为text WM_CONCAT_TEXT(col1) 1,2,3,4

大小写转换函数

函数 返回类型 描述 示例 结果
UPPER(expr) 字符 返回其中的表达式中的每个小写字母字符都被对应的大写字母字符替换的字符串 UPPER(‘gbase’) GBASE
LOWER(expr) 字符 返回其中表达式中的每个大写字母字符都被对应的小写字母字符替换的字符串 LOWER(‘GBase’) gbase
INITCAP(expr) 字符 返回表达式的一个副本,其中表达式中每个词都以大写字母开头 INITCAP(‘gbase’) Gbase

子字符串函数

函数 返回类型 描述 示例 结果
CHARINDEX(substr, source_str [, start_position]) 数值 搜索从源字符串内指定的或缺省的字符位置开始的位置。 charindex(‘通’, ‘南大通用’) 3
INSTR(source_str, substr [, start [, count]]) 数值 从字符串搜索指定的子字符串,并基于子字符串出现的次数返回在那个字符串中子字符串终止出现处的字符位置 INSTR(‘南大通用通通’,‘通’,3,3) 6
LEFT(source_str, position) 字符 从字符串参数返回由最左边 N 个字符组成的子字符串 LEFT(‘南大通用通通’, 4) 南大通用
RIGHT(source_str, position) 字符 从字符串参数返回由最右边 N 个字符组成的子字符串 RIGHT(‘南大通用通通’,4) 通用通通
SUBSTR(source_str, start_position [, length]) 字符 从字符串参数返回从start_position开始,length字符长度的子字符串 SUBSTR(‘南大通用通通’, 3, 2) 通用
SUBSTRB(source_str, start_position [, length]) 字符 从字符串参数返回从start_position开始,length字节长度的子字符串 SUBSTRB(‘南大通用通通’,7,6) 通用
SUBSTRING(source_str FROM start_position [FOR length]) 字符 从字符串参数返回从start_position开始,length字符长度的子字符串 SUBSTRING(‘南大通用通通’ from 3 for 2) 通用
SUBSTRING_INDEX(source_str, del, count) 字符 搜索指定的定界符字符的字符串,并基于您指定作为该函数的参数的定界符的计数返回开头或收尾字符的子字符串 SUBSTRING_INDEX(‘南大通用通通’, ‘通’, 2) 南大通用
col[first, last] 字符 返回字段col从first到last位置的子字符串 tabname[1,3] sys tabname字段值为systables

FORMAT_UNITS函数

函数 返回类型 描述 示例 结果
FORMAT_UNITS(‘number units’) 字符 展示指定的 number 和展示存储单位的适当的格式标签的字符串 FORMAT_UNITS(‘1025 KB’) 1.00MB
FORMAT_UNITS(‘number’,‘units’ [, precision]) 字符 展示指定的 number 和展示存储单位的适当的格式标签的字符串 FORMAT_UNITS(‘1025’,‘KB’, 4) 1.001MB

位逻辑函数

函数 返回类型 描述 示例 结果
bitand(A,B) 数值 按位与操作,按二进制位进行"与"运算 bitand(60,13) 12,即为 0000 1100
bitor(A,B) 数值 按位或运算符,按二进制位进行"或"运算 bitor(60,13) 61,即为 0011 1101
bitxor(A,B) 数值 异或运算符,按二进制位进行"异或"运算 bitxor(60,13) 49,即为 0011 0001
bitnot(A) 数值 取反运算符,按二进制位进行"取反"运算 bitnot(60) -61,即为 1100 0011,一个有符号二进制数的补码形式
bitandnot(A,B) 数值 结果与BITAND(A,BITNOT(B))相同。按二进制位,B的二进制位为1时,对应的A的二进制位置0 bitandnot(60,13) 48,即为 0011 0000

强制转型表达式

函数/表达式 返回类型 描述 示例 结果
CAST(expr [::target_data_type] AS target_data_type) 将表达式强制转型为另一数据类型 CAST(today::INTEGER::DECIMAL AS MONEY(16,2)) 43958 今天2020-05-08
expr ::target_data_type 将表达式强制转型为另一数据类型 today::INTEGER::DECIMAL 43958 今天2020-05-08

条件表达式

函数/表达式 返回类型 描述 示例 结果
CASE WHEN condition
THEN expr1
ELSE expr2
END
取决于表达式 通用的 CASE 表达式测试 WHEN 子句中为真的条件 CASE WHEN a>=80 THEN '优’
WHEN a>=60 THEN '及’
ELSE '不及格’
END
CASE condition
WHEN expr1 THEN expr2
ELSE exprN
END
取决于表达式 线性的 CASE 表达式将跟在 CASE 关键字之后的表达式的值与 WHEN 子句中的表达式作比较 CASE day
WHEN 6 THEN ‘SAT’
WHEN 0 THEN ‘SUN’
ELSE 'WORKDAY’
END
ISNULL(expr1, expr2) 取决于表达式 如果expr1为NULL,返回expr2,否则返回expr1 ISNULL(NULL::INT, ‘通用’) 通用
NVL(expr1, expr2) 取决于表达式 如果expr1为NULL,返回expr2,否则返回expr1 NVL(NULL::INT, ‘通用’) 通用
NVL2(expr, result1, result2) 取决于表达式 当第一个参数不为 NULL 时,返回第二个参数。如果第一个参数为 NULL,则返回第三个参数 nvl2(null::int,2,3) 3
NULLIF(expr1,expr2) 取决于表达式 如果expr1与expr2相同,返回NULL;否则返回expr1 NULLIF(null::INT, ‘通用’) NULL
DECODE(expr, when_expr, then_expr, else_expr) 取决于表达式 类似于 CASE 表达式,依赖于在指定的列中找到的值 DECODE(day,6, ‘SAT’,0, ‘SUN’, ‘WORKDAY’)

常量表达式

函数/表达式 返回类型 描述 示例 结果
CURRENT DATETIME 从系统时钟返回当前的时间和日期 CURRENT 2020-05-09 17:00:43
CURRENT_ROLE 字符 返回角色的名称(如果有的话),为当前用户启用其权限 CURRENT_ROLE
CURRENT_USER
USER
字符 返回当前用户的登录名称(也称为授权标识符) USER gbasedbt
DEFAULT_ROLE 字符 回角色的名称(如果有的话),是当前用户的缺省角色。 DEFAULT_ROLE
DBSERVERNAME
SITENAME
字符 返回当前数据库服务器的名称 SITENAME gbase01
SYSDATE DATETIME 从系统时钟读取 DATETIME 值,像 CURRENT 运算符一样,但有不同的缺省精度 SYSDATE 2020-05-09 17:01:59
TODAY DATE 从系统时钟返回当前的日历日期 TODAY 2020-05-09

OLAP window表达式

函数/表达式 描述 示例
ROW_NUMBER() / ROWNUMBER() OVER([window PARTITION clause] [window ORDER clause]) 为单个查询的结果集中的每一行返回一序列的编号 SELECT
ROW_NUMBER() OVER(PARTITION BY pkg_type ORDER BY prod_name) AS rownum, prod_name, pkg_type
FROM product;
LAG(expr [offset [, default]]) OVER([window PARTITION clause] window ORDER clause) SELECT name, salary,
LAG(salary) OVER (PARTITION BY dept ORDER BY salary),
LEAD(salary, 1, 0) OVER (PARTITION BY dept ORDER BY salary)
FROM employee;
LEAD(expr [offset [, default]])OVER([window PARTITION clause] window ORDER clause) SELECT name, salary,
LAG(salary) OVER (PARTITION BY dept ORDER BY salary),
LEAD(salary, 1, 0) OVER (PARTITION BY dept ORDER BY salary)
FROM employee;
RANK()OVER([window PARTITION clause] window ORDER clause) 为 OLAP window 中的每一行计算分等级的值 SELECT emp_num, sales,
RANK() OVER (ORDER BY sales) AS rank
FROM sales;
DENSERANK() / DENSE_RANK()
OVER([window PARTITION clause] window ORDER clause)
为 OLAP window 中的每一行计算等级值。返回值是一个顺序编号 SELECT emp_num, sales,
DENSE_RANK() OVER (ORDER BY sales) AS dense_rank
FROM sales;
PERCENT_RANK()
OVER([window PARTITION clause] window ORDER clause)
为 OLAP window 中的每一行计算等级值,规格化为从 0 至 1 的范围 SELECT emp_num, sales,
PERCENT_RANK() OVER (ORDER BY sales) AS per_rank
FROM sales;
CUME_DIST()
OVER([window PARTITION clause] window ORDER clause)
计算累计分布作为每一行的百分比等级。该等级表示为取值范围从 0 至 1 的实际值小数 SELECT emp_num, sales,
CUME_DIST() OVER (ORDER BY sales) AS cume_dist
FROM sales;
NTILE(unsigned)
OVER([window PARTITION clause] window ORDER clause)
将每一分区中的行划分成 N 等级的类别,称为片,每一类别包括大约相等的行数 SELECT name, salary,
NTILE(5) OVER (PARTITION BY dept ORDER BY salary)
FROM employee;
FIRST_VALUE(expr)
OVER([window PARTITION clause] window ORDER clause)
为每一 OLAP window 分区中的第一行返回指定的表达式的值 SELECT price, price -
FIRST_VALUE(price) OVER (PARTITION BY year ORDER BY tradingday) AS diff_price
FROM stock_price
WHERE tradingday between ‘2012-11-01’ and ‘2012-11-07’;
LAST_VALUE(expr)
OVER([window PARTITION clause] window ORDER clause)
为每一 OLAP window 分区中的最后一行返回指定的表达式的值 SELECT price, price -
LAST_VALUE(price) OVER (PARTITION BY year ORDER BY tradingday) AS diff_price
FROM stock_price
WHERE tradingday between ‘2012-11-01’ and ‘2012-11-07’;
RATIOTOREPORT(expr) /
RATIO_TO_REPORT(expr)
OVER([window PARTITION clause] [window ORDER clause])
基于该函数的数值参数,计算每一行对于该 window 分区中剩余行的分数比率 SELECT city, SUM(dollars) AS SALES,
RATIO_TO_REPORT(SUM(dollars)) OVER() *100 AS RATIO_DOLLARS
FROM sales, store, period
WHERE sales.store_id = store.store_id
AND sales.period_id = period.period_id
GROUP BY CITY
ORDER BY SALES DESC;
聚集函数(expr)
OVER([window PARTITION clause] [window ORDER clause])
从查询的结果返回聚集结果的几个函数,诸如总和和平均值,还可用作来自 OLAP window 的上下文的 OLAP 函数 SELECT customer_num, ship_date, ship_charge,
COUNT(*) OVER (PARTITION BY customer_num)
FROM orders
WHERE customer_num <= 110;

汉字转拼音函数

函数 返回类型 描述 示例 结果
GetHzFullPY(expr) 字符 将汉字转换为全拼 GetHzFullPY(‘南大通用’) nandatongyong
GetHzPYCAP(expr) 字符 将汉字转换为拼音首字母 GetHzPYCAP(‘南大通用’) ndty
GetHzFullPYsubstr(source_str, start_position [, length]) 字符 函数将汉字转换为拼音后,提取指定个连续字符 GetHzFullPYsubstr(‘南大通用’,6,4) tong

SYS_GUID函数

函数 返回类型 描述 示例 结果
SYS_GUID() 字符 生成并返回一个全球唯一标识 SYS_GUID() 2CDFC05B60854902A74281AC8D5D441E

本文主要来源于《GBase 8s SQL指南:语法》的 数据类型与表达式 章节。

你可能感兴趣的:(GBase,8s,#,GBase,8s,教程)