[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行,内容如下:

IDCOL1
12
22
32
43
53
64
7NULL

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

函数结果函数结果
COUNT (*)7MAX4
COUNT (DISTINCT col1)3MAX(DISTINCT col1)4
COUNT (ALL col1)6MIN2
COUNT ( col1 )6MIN(DISTINCT col1)2
AVG2.66666666666667RANGE2
AVG (DISTINCT col1)3.00000000000000SUM16
STDEV0.74535599249993SUM(DISTINCT col1)9
VARIANCE0.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%expr2MOD(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为2SQRT(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’)数值返回当前会话IDDBINFO(‘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
TODAYDATE返回当前日期的日期值TODAY2020-05-08
CURRENT [first TO last]DATETIME返回当时日期的日期时间值CURRENT YEAR TO SECOND2020-05-08 21:22:09
SYSDATE [first TO last]DATETIME返回当时日期的日期时间值SYSDATE YEAR TO SECOND2020-05-08 21:22:09
MDY(Month,Day,Year)DATE返回指定的日期值MDY(5,8,2020)2020-05-08
DATETIME(date/datetime) first TO lastDATETIME返回表达式代表的日期时间值datetime(2020-05-08 20:10:50) year to second2020-05-08 20:10:50
INTERVAL(date/datetime) first TO lastINTERVAL返回表达式代表的间隔值interval(3 03:04:05) day to second3 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
返回指定日期的下一个dayexprnext_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.731.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,返回NULLCONCAT(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_strREPLACE(‘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)字符聚集函数,返回指定表达式或者字段的值拼接,返回字段为textWM_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的二进制位置0bitandnot(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::DECIMAL43958 今天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,否则返回expr1ISNULL(NULL::INT, ‘通用’)通用
NVL(expr1, expr2)取决于表达式如果expr1为NULL,返回expr2,否则返回expr1NVL(NULL::INT, ‘通用’)通用
NVL2(expr, result1, result2)取决于表达式当第一个参数不为 NULL 时,返回第二个参数。如果第一个参数为 NULL,则返回第三个参数nvl2(null::int,2,3)3
NULLIF(expr1,expr2)取决于表达式如果expr1与expr2相同,返回NULL;否则返回expr1NULLIF(null::INT, ‘通用’)NULL
COALESCE(p1,p2,…pn)取决于表达式如果p1为null,返回p2,如果p2也为空,返回p3,…以至类推到pnCOALESCE(null::INT,2,3)2
DECODE(expr, when_expr, then_expr, else_expr)取决于表达式类似于 CASE 表达式,依赖于在指定的列中找到的值DECODE(day,6, ‘SAT’,0, ‘SUN’, ‘WORKDAY’)

常量表达式

函数/表达式返回类型描述示例结果
CURRENTDATETIME从系统时钟返回当前的时间和日期CURRENT2020-05-09 17:00:43
CURRENT_ROLE字符返回角色的名称(如果有的话),为当前用户启用其权限CURRENT_ROLE
CURRENT_USER
USER
字符返回当前用户的登录名称(也称为授权标识符)USERgbasedbt
DEFAULT_ROLE字符回角色的名称(如果有的话),是当前用户的缺省角色。DEFAULT_ROLE
DBSERVERNAME
SITENAME
字符返回当前数据库服务器的名称SITENAMEgbase01
SYSDATEDATETIME从系统时钟读取 DATETIME 值,像 CURRENT 运算符一样,但有不同的缺省精度SYSDATE2020-05-09 17:01:59
TODAYDATE从系统时钟返回当前的日历日期TODAY2020-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指南:语法》的 数据类型与表达式 章节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值