附录一 计算公式
A1.1 字符计算
1.拼接字符串:concat();
把多个字符串拼接成一个字符串,例如:concat('你好', '%%'),结果为:'你好%%'
2.修剪空白:trim();
去除文字最前端和最末端的空白,例如:trim(' 苹果 '), 结果为:'苹果'
3.截取文本:substring();
截取指定位置区间的文字,例如:substring('你好,可视化分析!', 4, 3),结果为:'可视化' ; substring('你好,可视化分析!', 4) 结果为:'可视化分析!'
4.替换文字:replace();
替换文字中的特定字符,例如:replace('图表分析', '图表', '可视化') 结果为:'可视化分析'
5.字母转大写:upper();
将文字中的字母全部转为大写, 例如:upper('hello world' ) 结果为:'HELLO WORLD'
6.字母转小写:lower();
将文字中的字母全部转为小写, 例如:lower (''HELLO WORLD') 结果为:'hello world'
A1.2 数值计算
加法:+;
数值加法,例如:2+3, 结果为:5
减法:-;
数值减法,例如:5-3, 结果为:2
乘法:*;
数值乘法,例如:2*3, 结果为:6
除法:/;
数值除法,例如:6/3, 结果为:2
取余数:%;
数值相除取余,例如:5%3, 结果为:2
计算绝对值:abs();
数值的绝对值,例如:abs(-10.2), 结果为:10.2
四舍五入:round();
数值四舍五入取整,例如:round(10.2), 结果:10
向下取整:floor();
取得不大于指定数值的最大整数,例如: floor(10.2) , 结果为:10
向上取整:ceil();
取得不小于指定数值的最小整数,例如: ceil(10.2) , 结果为:11
A1.3 时间计算
假设:时间字段 [t1].[time] 的值为:2015-10-29 12:52:10
取年:year();
获取指定日期中的年份值, 例如: year([t1].[time])对应的数据结果:2015
取月:month();
获取指定日期中的月份值, 例如: month([t1].[time])对应的数据结果为10
取日:day();
获取指定日期中的日,例如: day([t1].[time])对应的数据会结果为29
取季度:quarter();
获取指定日期对应的季度(1-3月为季度为1, 4-6月季度为2,以此类推),例如: quarter([t1].[time])对应的数据结果为4
计算星期数:week();
获取指定日期对应一年内的周数,例如: week([t1].[time])对应的数据结果为43
计算星期日:weekday();
获取指定日期所对应一周内的星期数,例如: weekday([t1].[time])对应的数据结果为4
获取小时(24h):hour();
获取指定日期中的小时值,例如: hour([t1].[time])对应的数据结果为12
获取分钟:minute();
获取指定日期中的分钟值,例如: minute([t1].[time])对应的数据结果为52
获取秒数:second();
获取指定日期中的秒数值,例如: second([t1].[time])对应的数据结果为10
转换Unix时间:epochTime();
将一个使用Unix epoch表示的时间值(单位秒)转为时间戳,例如: epochTime(1481708268) 结果为:2016年12月14日17时37分48秒(+8:00 时区)
A1.4 关系计算
等于:==;
判断两者是否相等
不等于:!=;
判断两者是否不等
大于:>;
判断前者是否大于后者
小于:<;
判断前者是否小于后者
大于等于:>=;
判断前者是否大于或等于后者
小于等于:<=;
判断前者是否小于或等于后者
匹配文本(SQL):like();
判断文本是否匹配指定格式,例如:like("可视化分析", "%分析"),结果为:真
A1.5 逻辑计算
与:&&;
逻辑与(两者均为真时结果为真),例如:true && false,结果为 false
或:||;
逻辑或(两者有一个为真时结果为真),例如:true || false,结果为 true
非:!;
逻辑非,例如:! true,结果为 false
逻辑取值:case();
逐个逻辑判断,当某个判断结果为真时,得到其对应的结果值,如果都不为真,则结果为最后一个值,例如:case([t1].[age] < 15, "少年", [t1].[age] < 45, "青年", [t1].[age] < 60, "中年", "老年")
匹配取值:decode();
获取第一个值,与后续的值逐个比较,当有一个与其相等时,得到对应的值。如果没有相等的值,则结果为最后一个值,例如:decode([t1].[region], 0, "东北", 1, "华北", 2, "华东", 3, "华中", 4, "华南", 5, "西北", 6, "西南", "其他")
A1.6 聚合计算
求和:sum();
计数:count();
不重复计数:count_distinct();
平均值:avg();
最大值:max();
最小值:min();