2
头图

测试环境:

  • Vertica:Vertica Analytic Database v11.1.1-22
  • WutongDB:V5.4.10.0

1. abs

  • 功能说明:

    abs(expression) 函数返回表达式的绝对值。常用于去除负号,确保值为非负数。

  • 测试语句:

    select
    '20240601'       ,--统计日期
    case when b.real_fee_c_dtal<>0  and b.real_fee_c_dtal_last<>0  then   (b.real_fee_c_dtal-b.real_fee_c_dtal_last)/abs(b.real_fee_c_dtal_last)*100
     when b.real_fee_c_dtal=0  and b.real_fee_c_dtal_last<0  then 100
     when b.real_fee_c_dtal_last=0  and b.real_fee_c_dtal>0  then 100
     else 0 end --C侧月累计收入同比增幅
    from gs_test.tb_bds_cfg_dim_grid_info_day a
    left join gs_test.tb_ado_index_base_income_day b 
    on a.grid_code=b.grid_code 
    and b.statis_day='20240601'
    where a.grid_code like '1%' limit 20;
    
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下图所示:

    abs_vertica_out.png

  • WutongDB 输出结果:

    在梧桐数据库输出结果如下图所示:(与Vertica精度不同)

    abs_wutongdb_out.png

2. acos

  • 功能说明:

    acos(expression) 函数返回表达式的反余弦值,输入应在[-1, 1]范围内,结果为弧度。

  • 测试语句:

    select acos(0.5) as  acos_result;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:(与Vertica精度不同)

    1.0471975511966
  • WutongDB 输出结果:

    在梧桐数据库输出如下所示:

    1.0471975511965979

3. asin

  • 功能说明:

    asin(expression) 函数返回表达式的反正弦值,输入应在[-1, 1]范围内,结果为弧度。

  • 测试语句:

    select asin(0.5) as  asin_result;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:(与Vertica精度不同)

    0.523598775598299
  • WutongDB 输出结果:

    在梧桐数据库输出如下所示:

    0.5235987755982989

4. atan

  • 功能说明:

    atan(expression) 函数返回表达式的反正切值,结果为弧度。

  • 测试语句:

    select atan(0.5) as  atan_result;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

     0.463647609000806
  • WutongDB 输出结果:

    在梧桐数据库输出如下所示:(与Vertica精度不同)

    0.4636476090008061

5. atan2

  • 功能说明:

    atan2(y, x) 函数返回两个参数的反正切值,考虑到象限的值,结果为弧度。

  • 测试语句:

    select atan2(2,2) as  atan2_result;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    0.785398163397448
  • WutongDB 输出结果:

    在梧桐数据库输出如下所示:(与Vertica精度不同)

    0.7853981633974483

6. cbrt

  • 功能说明:

    cbrt(expression) 函数返回表达式的立方根。适用于计算数值的立方根。

  • 测试语句:

    select cbrt(8) as  cbrt_result;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    2
  • WutongDB 输出结果:

    在梧桐数据库输出如下所示:

    2

7. ceiling

  • 功能说明:

    ceiling(expression) 函数返回大于或等于表达式的最小整数。即向上取整。

  • 测试语句:

    select ceiling(6.4) as a ,ceiling(6.9) as b;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    7,7
  • WutongDB 输出结果:

    在梧桐数据库输出如下所示:

    7,7

8. cos

  • 功能说明:

    cos(expression) 函数返回表达式的余弦值,结果为弧度。

  • 测试语句:

    select cos(0);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    1
  • WutongDB 输出结果:

    在梧桐数据库输出如下所示:

    1

9. cosh

  • 功能说明:

    cosh(expression) 函数返回表达式的双曲余弦值。

  • 测试语句:

    select cosh(1);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

     1.54308063481524
  • WutongDB 输出结果:

    在梧桐数据库输出如下所示:

    1.5430806348152437

10. cot

  • 功能说明:

    cot(expression) 函数返回表达式的余切值。

  • 测试语句:

    select cot(1);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    0.642092615934331
  • WutongDB 输出结果:

    在梧桐数据库输出如下所示:

    0.6420926159343306

11. degrees

  • 功能说明:

    degrees(expression) 函数将弧度转换为角度。适用于需要将弧度结果转换为角度表示的场合。

  • 测试语句:

    select degrees(1,2,3),degrees(1);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    1.03416666666667 57.2957795130823
  • WutongDB 输出结果:

    在梧桐数据库输出如下所示:

    参数异常,57.29577951308232

12. distance

  • 功能说明:

    distance(latitude1, longitude1, latitude2, longitude2) 函数计算两组地理坐标之间的距离,结果通常为米或其他单位。

  • 测试语句:

    select distance(45,0,45,1);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    78.6262959272162
  • WutongDB 输出结果:

    在梧桐数据库输出错误,找不到该函数,如下所示:

    function distance(integer, integer) does not exist
  • Wutong DB 替代方案:

    Wutong DB 5.4 和 Wutong DB 6 版本中没有内置的 distance 函数,但您可以通过扩展如 PostGIS 来计算地理距离。

    首先,确保已安装 PostGIS 扩展:

    CREATE EXTENSION postgis;

    使用 ST_Distance_SphereST_Distance 计算地球上两点的距离:

    SELECT ST_Distance_Sphere(
        ST_MakePoint(45, 0),
        ST_MakePoint(45, 1)
    ) AS distance;

13. distancev

  • 功能说明:

    distancev(latitude1, longitude1, latitude2, longitude2) 函数计算两组地理坐标之间的矢量距离。

  • 测试语句:

    select distancev(45,0,45,1);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    78.8463347095916
  • WutongDB 输出结果:

    在梧桐数据库输出错误,找不到该函数,如下所示:

    function distancev() does not exist
  • Wutong DB 替代方案:

    distance 一样,您可以使用 PostGIS 扩展中的 ST_DistanceST_Distance_Sphere 函数来替代。

    SELECT ST_Distance(
        ST_MakePoint(45, 0),
        ST_MakePoint(45, 1)
    ) AS distancev;

14. exp

  • 功能说明:

    exp(expression) 函数返回自然常数e的指定次方。

  • 测试语句:

    select exp(0),exp(1),exp(2);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    1.0 
    2.71828182845905 
    7.38905609893065
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    1
    2.718281828459045
    7.38905609893065

15. floor

  • 功能说明:

    floor(expression) 函数返回小于或等于表达式的最大整数。即向下取整。

  • 测试语句:

    select
       user_id    ,--用户编码
       channel_id ,--渠道编码
       join_date   --入网日期
    from gs_test.tb_mk_library_middle_user_add_day
    where floor(join_date/100)= '202302' limit 20;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下图所示:

    floor_vertica_out.png

  • WutongDB 输出结果:

    在梧桐数据库输出结果如下图所示:(与Vertica精度不同)

    floor_wutongdb_out.png

16. hash

  • 功能说明:

    hash(expression) 函数返回表达式的哈希值。用于数据分布、分区或校验。

  • 测试语句:

    select hash(1) as one,hash(0) as zero;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    5783548743464686114
    1350854927184241431
  • WutongDB 输出结果:

    在梧桐数据库输出错误,找不到该函数,结果如下所示:

     function hash(unknown) does not exist
  • Wutong DB 替代方案:

    Wutong DB 5.4 和 Wutong DB 6 没有内置的 hash() 函数,可以使用 pgcrypto 扩展中的哈希函数,如 digest(),生成 MD5、SHA1 或其他哈希值。

    SELECT digest('1', 'sha256');

17. ln

  • 功能说明:

    ln(expression) 函数返回表达式的自然对数(以e为底)。

  • 测试语句:

    select ln(1),ln(2);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    0.0
    0.6931471805599453
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    0.0
    0.6931471805599453

18. log

  • 功能说明:

    log(base, expression) 函数返回指定底数的对数值。用于计算表达式的对数值。

  • 测试语句:

    select log(10);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    1
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    1

19. log10

  • 功能说明:

    log10(expression) 函数返回表达式的以10为底的对数值。

  • 测试语句:

    select log10(100);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    2
  • WutongDB 输出结果:

    在梧桐数据库输出错误,找不到该函数,结果如下所示:

    function log10(integer) does not exist
  • Wutong DB 5.4 和 Wutong DB 6 替代方案:

    Wutong DB 中,log10 可以使用 log() 函数,并指定底数为 10:

    SELECT log(10, 100);

20. mod

  • 功能说明:

    mod(expression1, expression2) 函数返回两个数相除的余数,常用于循环或周期性计算。

  • 测试语句:

    select
      status,
      count(1) as cnt
    FROM
      (
          select
              case
                  when user_rh_flag_1 like '完美%' then user_rh_flag_1
                  when mod(user_flag_2, 100000) = '11111' then '完美融合'
                  when user_rh_flag_1 like '大%' then user_rh_flag_1
                  when mod(user_flag_2, 10000) = '1111' then '大融合'
                  when user_rh_flag_1 like '小%' then user_rh_flag_1
                  when mod(user_flag_2, 1000) = '111' then '小融合'
                  else '未融合'
              end as status
          from
              gs_test.tb_ads_fusion_stimulate_order_list_day_tmp05
      ) t1
    group by
      status
    order by
      cnt;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下图所示:

    mod_vertica_out.png

  • WutongDB 输出结果:

    在梧桐数据库输出结果如下图所示:(与Vertica精度不同)

    mod_wutongdb_out.png

21. pi

  • 功能说明:

    pi() 函数返回圆周率π的值。

  • 测试语句:

    select pi();
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    3.14159265358979323846264338327950288419716939937510
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    3.141592653589793

22. power

  • 功能说明:

    power(expression1, expression2) 函数返回第一个表达式的第二个表达式次方。用于指数运算。

  • 测试语句:

    select power(2,3);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    8
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    8

23. radians

  • 功能说明:

    radians(expression) 函数将角度转换为弧度。

  • 测试语句:

    select RADIANS(1,2,3),radians(1); 
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    0.018049613347708,0.0174532925199433
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    参数错误,0.0174532925199433

24. random

  • 功能说明:

    random() 函数返回一个介于0和1之间的随机数。

  • 测试语句:

    select
      case
          when nvl(b.user_cnt, 0) = 0 then 45 + random() * 10
          else nvl(b.total_fee, 0) / b.user_cnt
      end as nums
    from
      gs_test.tb_mk_iop_93056_marketing_effect_mon_tmp05 a
      left join (
          select
              activity_id,
              max(user_cnt) as user_cnt,
              max(total_fee) as total_fee
          from
              gs_test.tb_mk_iop_93055_marketing_effect_mon_pre
          group by
              activity_id
      ) b on a.activity_id = b.activity_id
    order by
      nums;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    有数据
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    有数据

25. randomint

  • 功能说明:

    randomint(max_value) 函数返回一个介于0和max_value之间的随机整数。

  • 测试语句:

    select randomint(10);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    一个随机整数
  • WutongDB 输出结果:

    在梧桐数据库输出错误,找不到该函数,结果如下所示:

    randomint(integer) does not exist
  • Wutong DB 5.4 替代方案:

    Wutong DB 5.4 不支持加密安全的随机数生成,可以使用 floor(random() * n) 生成随机整数:

    SELECT floor(random() * 10) AS randomint;
  • Wutong DB 6 替代方案:

    Wutong DB 6 版本中可以使用 pgcrypto 扩展的 gen_random_uuidgen_random_bytes 来生成加密安全的随机数。

    安装 pgcrypto 扩展:

    CREATE EXTENSION pgcrypto;

    使用 gen_random_bytes 生成随机整数:

    SELECT mod(gen_random_bytes(4)::int, 10) AS randomint_crypto;

26. randomint_crypto

  • 功能说明:

    randomint_crypto(max_value) 函数返回一个介于0和max_value之间的加密安全的随机整数。

  • 测试语句:

    select randomint_crypto(10);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    一个随机整数[0,10)
  • WutongDB 输出结果:

    在梧桐数据库输出错误,找不到该函数,结果如下所示:

    randomint_crypto(integer) does not exist
  • Wutong DB 替代方案:

    参照 randomint 的解决替代方案。

27. round

  • 功能说明:

    round(expression, decimal_places) 函数将表达式四舍五入到指定的小数位。

  • 测试语句:

    select
      case
          when b.xxbll <> 0 then round(a.xxbll / b.xxbll -1, 2)
          else 0
      end as jqrts
    from
      (
          select
              *
          from
              gs_test.tb_test_qycpfz_day
          where
              statis_day = '20210617'
      ) a,
      (
          select
              *
          from
              gs_test.tb_test_qycpfz_day_tmp01
      ) b
    where
      a.grid_code = b.grid_code
    limit
      20;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下图所示:

    round_vertica_out.png

  • WutongDB 输出结果:

    在梧桐数据库输出结果如下图所示:(与Vertica精度不同)

    round_wutongdb_out.png

28. sign

  • 功能说明:

    sign(expression) 函数返回表达式的符号,1表示正数,0表示零,-1表示负数。

  • 测试语句:

    select sign(1),sign(0),sign(-1);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    1
    0
    -1
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    1
    0
    -1

29. sin

  • 功能说明:

    sin(expression) 函数返回表达式的正弦值,输入为弧度。

  • 测试语句:

    select sin(1),sin(0),sin(-1);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    0.841470984807897 
    0.0 
    -0.841470984807897
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    0.8414709848078965
    0
    -0.8414709848078965

30. sinh

  • 功能说明:

    sinh(expression) 函数返回表达式的双曲正弦值。

  • 测试语句:

    select sinh(1),sinh(0),sinh(-1);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    1.1752011936438 
    0.0 
    -1.1752011936438
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    1.1752011936438014
    0
    -1.1752011936438014

31. sqrt

  • 功能说明:

    sqrt(expression) 函数返回表达式的平方根。

  • 测试语句:

    select sqrt(4),sqrt(9);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    2.0 3.0
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    2.0 3.0

32. tan

  • 功能说明:

    tan(expression) 函数返回表达式的正切值,输入为弧度。

  • 测试语句:

    select tan(1),tan(0),TAN(-1) ;
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    1.5574077246549
    0.0
    -1.5574077246549
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    1.5574077246549023
    0
    -1.5574077246549023

33. tanh

  • 功能说明:

    tanh(expression) 函数返回表达式的双曲正切值。

  • 测试语句:

    select tanh(1),tanh(0),tanh(-1);
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下所示:

    0.761594155955765 
    0.0
    -0.761594155955765
  • WutongDB 输出结果:

    在梧桐数据库输出结果如下所示:

    0.7615941559557649
    0
    -0.7615941559557649

34. trunc

  • 功能说明:

    trunc(expression, decimal_places) 函数将表达式截断到指定的小数位,而不是四舍五入。这个函数常用于精度控制,特别是在金融计算中。

  • 测试语句:

    select  
    nvl(case when up_area_code in ('930','931','932','933','934','935','936','937', '938','939',
    '941','943','945','947') then up_area_code  else '931' end ,'999'), --地市编码 
    sum(case when call_count>0 then 1 else 0 end)  ,  -- 通话客户
    trunc(sum(case when call_count>0 then total_fee else 0 end)/100.00,2) ,  --""通话客户收入---求ARPU
    sum(case when gprs_use_b>0 then 1 else 0 end)  ,  --流量客户
    trunc(sum(case when gprs_use_b>0 then gprs_use_b else 0 end)/1024.00/1024/1024,2) ,  --上网流量---求DOU
    sum(case when call_count>0 then 1 else 0 end)  ,  --通话客户
    sum(case when call_count>0 then call_fee_duration else 0 end)     --通话客户时长---求MOU
    from gs_test.tb_mk_bicloud_area_customer_consumption_mon_tmp01_1
    group by rollup(case when up_area_code in ('930','931','932','933','934','935','936','937','938','939',
    '941','943','945','947') then up_area_code else '931' end )
  • Vertica 输出结果:

    vertica可以直接使用该函数,输出结果如下图所示:

    trunc_vertica_out.png

  • WutongDB 输出结果:

    在梧桐数据库输出结果如下图所示:(与Vertica精度不同)

    trunc_wutongdb_out.png


千钧
7 声望3 粉丝

不爱美食的古玩爱好者不是一个真正的程序猿!