附录一 计算公式

10.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'

10.2 数值计算

  1. 加法:+;

    数值加法,例如:2+3, 结果为:5

  2. 减法:-;

    数值减法,例如:5-3, 结果为:2

  3. 乘法:*;

    数值乘法,例如:2*3, 结果为:6

  4. 除法:/;

    数值除法,例如:6/3, 结果为:2

  5. 取余数:%;

    数值相除取余,例如:5%3, 结果为:2

  6. 计算绝对值:abs();

    数值的绝对值,例如:abs(-10.2), 结果为:10.2

  7. 四舍五入:round();

    数值四舍五入取整,例如:round(10.2), 结果:10

  8. 向下取整:floor();

    取得不大于指定数值的最大整数,例如: floor(10.2) , 结果为:10

  9. 向上取整:ceil();

    取得不小于指定数值的最小整数,例如: ceil(10.2) , 结果为:11

10.3 时间计算

假设:时间字段 [t1].[time] 的值为:2015-10-29 12:52:10

  1. 取年:year();

    获取指定日期中的年份值, 例如: year([t1].[time])对应的数据结果:2015

  2. 取月:month();

    获取指定日期中的月份值, 例如: month([t1].[time])对应的数据结果为10

  3. 取日:day();

    获取指定日期中的日,例如: day([t1].[time])对应的数据会结果为29

  4. 取季度:quarter();

    获取指定日期对应的季度(1-3月为季度为1, 4-6月季度为2,以此类推),例如: quarter([t1].[time])对应的数据结果为4

  5. 计算星期数:week();

    获取指定日期对应一年内的周数,例如: week([t1].[time])对应的数据结果为43

  6. 计算星期日:weekday();

    获取指定日期所对应一周内的星期数,例如: weekday([t1].[time])对应的数据结果为4

  7. 获取小时(24h):hour();

    获取指定日期中的小时值,例如: hour([t1].[time])对应的数据结果为12

  8. 获取分钟:minute();

    获取指定日期中的分钟值,例如: minute([t1].[time])对应的数据结果为52

  9. 获取秒数:second();

    获取指定日期中的秒数值,例如: second([t1].[time])对应的数据结果为10

  10. 转换Unix时间:epochTime();

    将一个使用Unix epoch表示的时间值(单位秒)转为时间戳,例如: epochTime(1481708268) 结果为:2016年12月14日17时37分48秒(+8:00 时区)

10.4 关系计算

  1. 等于:==;

    判断两者是否相等

  2. 不等于:!=;

    判断两者是否不等

  3. 大于:>;

    判断前者是否大于后者

  4. 小于:<;

    判断前者是否小于后者

  5. 大于等于:>=;

    判断前者是否大于或等于后者

  6. 小于等于:<=;

    判断前者是否小于或等于后者

  7. 匹配文本(SQL):like();

    判断文本是否匹配指定格式,例如:like("可视化分析", "%分析"),结果为:真

10.5 逻辑计算

  1. 与:&&;

    逻辑与(两者均为真时结果为真),例如:true && false,结果为 false

  2. 或:||;

    逻辑或(两者有一个为真时结果为真),例如:true || false,结果为 true

  3. 非:!;

    逻辑非,例如:! true,结果为 false

  4. 逻辑取值:case();

    逐个逻辑判断,当某个判断结果为真时,得到其对应的结果值,如果都不为真,则结果为最后一个值,例如:case([t1].[age] < 15, "少年", [t1].[age] < 45, "青年", [t1].[age] < 60, "中年", "老年")

  5. 匹配取值:decode();

    获取第一个值,与后续的值逐个比较,当有一个与其相等时,得到对应的值。如果没有相等的值,则结果为最后一个值,例如:decode([t1].[region], 0, "东北", 1, "华北", 2, "华东", 3, "华中", 4, "华南", 5, "西北", 6, "西南", "其他")

10.6 聚合计算

  1. 求和:sum();

  2. 计数:count();

  3. 不重复计数:count_distinct();

  4. 平均值:avg();

  5. 最大值:max();

  6. 最小值:min();

results matching ""

    No results matching ""