TeraData函数小结
/*系统函数*/
time; --当前时间
current_date; --当前日期
current_timestamp --当前时间戳
type(字段);--字段类型
coalesce(a,b,c,d) --取第一个非null值
distinct --去除重复值
top 10 --前几位
sample 10 --采样函数,随机从结果集中取10个条记录
decode(字段,健1,值1,健2,值2,...) --匹配函数
/*数据类型*/
char,varchar,integer,decimal,date,time,timestamp
/*转换函数*/
to_char(data,'yyyymmdd') --转换成字符串
to_date('20191031','yyyymmdd') --转换成日期
cast('20191031' as date format 'YYYYMMDD') --转换成日期
cast('10' as decimal(3,1)) --转换成数值 注释:
/*集合操作*/
union --返回去重之后的结果集
union all --并集,不去重
intersect --交集,去重
except--第一个结果集中排除第二个结果集,去重
/*字符串函数*/
--增
'A'||'B' --拼接字符串
lpad('a',10,'#') --把“#”不断添加到字符串左侧,直到字符串满足10位长度。结果:#########a
rpad('a',10,'#') --结果:a#########
--删
substr('abcd',1,2) --截取字符串,从第一个开始截取2位。第三个参数省去时,表示截取的字符串末尾。
substring('abcde' from 1 for 2) --同上
trim(both '#' from '##ABCD##' ) --去除字符串两侧的“#”号
trim(' ABCD ' ) --去除字符串两侧的空格,不包括制表符。结果: ‘ABCD’
ltrim(' abcd ') --去除左侧的空格。结果: ‘abcd ’
rtrim(' abcd ') --去除右侧的空格。结果: ‘ abcd’
--改
oreplace('abcd','a','$') --替换函数。将a替换成$ 结果:‘$bcd’
reverse('abcd') --翻转字符串。结果:dcba
lower('A') --字符串变小写
upper('a') --字符串变大写
initcat('abc abc') --首字母大写。结果:‘Abc Abc’
--查
char('aa') --字符串有几个字符,一个汉字记作两个字符,返回int类型。
length('你好') --字符长度,返回double类型,一个汉字看作两个字符。
chr('97') --返回码值对应的字符,chr(9)=制表符 chr(10)=回车 chr(13)=换行
ascii('a') --返回字符的ascii码
index('abcd','b') --字符串出现的位置,从1开始
instr('abcdabcd','b',2,1) --第2个位置开始,第2次出现的位置(包含首位)。 结果: 2
/*算数函数*/
trim( 1234 (format('-(10)9(10)')) --数字补齐10位,返回varchar类型,结果:0000001234
round(1.234,1) --四舍五入,小数位保留一位有效数字
3**3 --三的三次方 结果:27
power(3,2) --三的二次方 结果: 9
sqrt(16) --平方根 结果:4
random(1,10) --随机值,1-10的随机数,返回int类型。
abs(10) --绝对值
sign(-3) --返回数值符号,结果为 -1、1或0。 返回两位精度的number类型。
102 mod 10 --取模函数 ,结果:2
exp(2) --指数
sin(x) --三角函数
cos(x) --三角函数
tan(x) --三角函数
/*聚合函数*/
min --最小
max --最大
count --计数
sum --汇总
avg --平均值:Teradate中函数忽略null。不同数据库存在差异,根据数据库对null的处理方式来分析。TD中null参与运算结果为null。
/*排序函数*/
rank() over(partition 分组 order by 排序) --相同数值,排序相同,排序断开
dense_rank() over(partition .. order by .. ) --相同数值,排序相同,排序连续
row_number() over(partition 分组 order by 排序) --相同数值,排序不同,排序连续
qualify row_bmer() .... =1 --取排序为1的记录
/*OLAP函数*/
csum(累加值,排序) --累加函数。可以通过group by来重置累加值。
msum(bal,3,stat_dt) --移动求和。 计算最近(本条记录和上面两条)三天记录的和,按照stat_dt排序。
mavg(bal,3,stat_dt) --移动平均。 计算最近(本条记录和上面两条)三天记录的平均值,按照stat_dt排序。
mdiff(bal,1,stat_dt) --移动差分。 计算本条记录的bal和上一条记录的bal差值,按照stat_dt排序。日期使用mdiff时应该先吧日期转换成int类型。
说明:midff无法直接作用于日期列,可以先算出日期相对于你某一天的int值,再计算这两个int值的差。(A-X)-(B-X) =A-B
quantile(10,bal asc) --分为函数。将所有的记录归类为10类,根据余额排序。
mlinreg(预测列,宽度,排序列),reg_slope,reg_intercept --线性回归函数
/*OLAP统计函数*/
--标准差:
--反应数据离散程度,大的标准差,反应了大部分数据和平均值差异较大。
--标准差是方差的算术平方根。标准差值越接近于零,说明样本数据余越集中分布
STDDEV_SAMP(VALUE) --标准差
STDDEV_POP(VALUE) --总体标准差:
--变异函数
--随机场、空间内的两点之差的方差。
--反应了空间内点的离散程度
VAR_SAMP(VALUE) --变异函数:
VAR_POP(VALUE) --全体变异函数:
--分布函数
--若已知数轴上点的分布函数,则可以知道随机值X落在(负无穷,x] 这个区间的概率。
SKEW(VAL) --分布歪斜函数:正表示向正向倾斜 ,负表示向负向倾斜 。
KURTOSIS(VAL)--分布峰态函数
--协方差函数
--定义:在概率学和统计学中,两个变量如何相关变化的度量。方差是协方差的一种特殊情况,即两个变量相同。
--描述两个变量的相关性。如一个男孩的猥琐程度和受女孩欢迎程度,协方差结果为+则表示,越猥琐越受欢迎。0表时两个变量不相干。
COVAR_POP(V1,V2)
--相关性函数
CORR(V1,V2)
--线性回归函数
--反应了数据的变化预期值。如:10岁,身高1.5米,12岁,1.7米,预测13岁,1.9米。
--客户存款随年龄的变化,知识储备岁工作年龄的变化。
REG_SLOPE(独立,依赖)--回归倾斜函数:测试独立变量在依赖变量上的变化率
--回归截取函数
REG_INTERCEPT(独立,依赖) --是回归线与纵坐标的截取点