1
头图

测试环境:

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

1. within group order by

  • 功能说明:

    within group order by 子句用于聚合函数中,用于指定按特定顺序聚合数据。常用于计算百分位数、分位数等操作。

  • 测试语句:

    select
        age,
        max(sts_month) as max_value,
        min(sts_month) within group (
            order by
              age desc
        ) as min_desc_value
    from
       bdcis.tb_cis_user_induser_day
    group by
        age
    limit
        10;
  • Vertica 输出结果:

    vertica 可以直接使用该函数,给一个具体的参数(vertica)可以得到结果,而在测试语句中的图片显示,参数为 verchar 类型的字段就报错,

    within_group_order_by_vertica_out.png

  • WutongDB 输出结果:

    在梧桐数据库中出错,如下所示:

    syntax error at or near "within"

2. approximate_count_distinct

  • 功能说明:

    approximate_count_distinct(expression) 函数用于估算表达式中不同值的数量,性能优于精确计数,在处理大数据集时特别有用。

  • 测试语句:

    select
      approximate_count_distinct(serv_number, 5) as five
    from
      bdcis.tb_cis_user_induser_day
    limit
      10;
  • Vertica 输出结果:

    57771503
  • WutongDB 输出结果:

    argmin() 函数不存在,如下图所示:

    function approximate_count_distinct(character varying, integer) does not exist

3. approximate_median

  • 功能说明:

    approximate_median(expression) 函数用于估算数据集中值的中位数。相比精确中位数计算,它的计算速度更快,适用于大数据集。

  • 测试语句:

    select
      approximate_median(sts_month)
    from
      bdcis.tb_cis_user_induser_day
    limit
      10;
  • Vertica 输出结果:

    输出结果如下所示:

    202101
  • WutongDB 输出结果:

    在梧桐中,函数不存在,如下所示:

    function approximate_median(bigint) does not exist

4. approximate_percentile

  • 功能说明:

    approximate_percentile(expression using parameters percentiles) 函数用于估算给定百分比的百分位数。它比精确百分位数计算快,适用于大数据集。

  • 测试语句:

    select
      user_id,
      approximate_percentile(sts_month using parameters percentiles = '0.5') as median
    from
      bdcis.tb_cis_user_induser_day
    group by
      user_id
    limit
      10;
  • Vertica 输出结果:

    输出结果如下图所示:

    approximate_percentile_vertica_out.png

  • WutongDB 输出结果:

    在梧桐中,执行错误,如下所示:

    syntax error at or near "using"

5. approximate_quantiles

  • 功能说明:

    approximate_quantiles(expression using parameters nquantiles) 函数用于估算指定数量分位数的值,用于快速估算数据分布。

  • 测试语句:

    select approximate_quantiles(sts_month using parameters nquantiles=6) over()
    from bdcis.tb_cis_user_induser_day limit 10;
  • Vertica 输出结果:

    在 vertica 中可以执行,如下图所示:

    approximate_quantiles_vertica_out.png

  • WutongDB 输出结果:

    在梧桐中,执行错误,如下所示:

    syntax error at or near "using"

6. argmax_agg

  • 功能说明:

    argmax_agg(expression) 函数用于返回聚合中最大值对应的另一个表达式的值。

  • 测试语句:

    select
      sts_month,
      argmax_agg(age) as max_agg
    from
      bdcis.tb_cis_user_induser_day
    group by
      sts_month
    limit
      10;
  • Vertica 输出结果:

    在 vertica 中函数不存在,出错,如下图所示:

    Function argmax_agg(int) does not exist, or permission is denied for argmax_agg(int)
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function argmax_agg(bigint) does not exist

7. argmin_agg

  • 功能说明:

    argmin_agg(expression) 函数用于返回聚合中最小值对应的另一个表达式的值。

  • 测试语句:

    select
      argmin_agg(age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中函数不存在,出错,如下图所示:

    Function argmin_agg(int) does not exist, or permission is denied for argmax_agg(int)
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    pq: function argmin_agg(bigint) does not exist

8. avg

  • 功能说明:

    avg(expression) 函数用于计算表达式的平均值。

  • 测试语句:

    select
      user_id,
      avg(arpu) refer_3arpu
    from
      gs_test.test_function_avg
    where
      total = 2
    group by
      user_id;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    13.45
  • WutongDB 输出结果:

    在梧桐中输出结果如下所示(小数位数不同):

    13.4500000000000000 

9. bool_and

  • 功能说明:

    bool_and(expression) 函数用于检查所有表达式是否都为真,返回布尔值。

  • 测试语句:

    create table gs_test.ceshi_bool
    (
     model varchar(20),
     colors varchar(20)
    );
    
    insert into gs_test.ceshi_bool
    select 'beginner','green'
    union all
    select 'intermediate','blue'
    union all
    select 'intermediate','blue'
    union all
    select 'advanced','green'
    union all
    select 'advanced','blue'
    union all
    select 'professional','blue'
    union all
    select 'professional','green'
    union all
    select 'beginner','green'  ;
    
    
    select model,
    bool_and(colors='blue') as two_blue
    from gs_test.ceshi_bool
    group by  model
    order by model,two_blue; 
  • Vertica 输出结果:

    在 vertica 中输出结果如下图所示:

    bool_and_vertica_out.png

  • WutongDB 输出结果:

    梧桐输出结果如下图所示:

    bool_and_wutongdb_out.png

10. bool_or

  • 功能说明:

    bool_or(expression) 函数用于检查是否至少有一个表达式为真,返回布尔值。

  • 测试语句:

    select
      model,
      bool_or(colors = 'blue') as two_blue
    from
      gs_test.ceshi_bool
    group by
      model
    order by
      model,
      two_blue;
  • Vertica 输出结果:

    在 vertica 中输出结果如下图所示:

    bool_or_vertica_out.png

  • WutongDB 输出结果:

    梧桐输出结果如下图所示:

    bool_or_wutongdb_out.png

11. bool_xor

  • 功能说明:

    bool_xor(expression) 函数用于检查表达式中真值的数量是否为奇数,返回布尔值。

  • 测试语句:

    select
      model,
      bool_xor(colors = 'blue') as two_blue
    from
      gs_test.ceshi_bool
    group by
      model;
  • Vertica 输出结果:

    在 vertica 中输出结果如下图所示:

    bool_xor_vertica_out.png

  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function bool_xor(boolean) does not exist

12. corr

  • 功能说明:

    corr(expression1, expression2) 函数用于计算两个表达式之间的相关系数,衡量它们的线性关系。

  • 测试语句:

    select corr(user_id,age) 
    from bdcis.tb_cis_user_induser_day
    limit 10;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    0.0481786865112495
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function corr(character varying, bigint) does not exist

13. count

  • 功能说明:

    count(expression) 函数用于计算表达式中非NULL值的数量。

  • 测试语句:

    select
      area_code,
      count(
          distinct case
              when total_fee > 0 then user_id
          end
      ) --当月出账用户数
    from
      gs_test.test_function_count
    group by
      area_code
    order by
      1;
  • Vertica 输出结果:

    在 vertica 中输出结果如下图所示:

    count_vertica_out.png

  • WutongDB 输出结果:

    在梧桐中,执行错误,如下所示:

    count_wutongdb_out.png

14. covar_pop

  • 功能说明:

    covar_pop(expression1, expression2) 函数用于计算总体协方差,衡量两个变量的总体线性关系。

  • 测试语句:

    select
      covar_pop(user_id, age)
    from
      bdcis.tb_cis_user_induser_day
    limit
      10;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    1829069825116110
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function covar_pop(character varying, bigint) does not exist

15. covar_samp

  • 功能说明:

    covar_samp(expression1, expression2) 函数用于计算样本协方差,衡量样本数据中两个变量的线性关系。

  • 测试语句:

    select
      covar_samp(user_id, age)
    from
      bdcis.tb_cis_user_induser_day
    limit
      10;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    1829069855719900
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function covar_samp(character varying, bigint) does not exist

16. group_id

  • 功能说明:

    group_id() 函数返回一个数字,表示分组中每个组合的唯一 ID,通常用于多级分组(如 ROLLUP 或 CUBE )。

  • 测试语句:

    select
      user_id,
      age,
      grouping_id(user_id, age),
      group_id()
    from
      bdcis.tb_cis_user_induser_day
    group by
      user_id,
      rollup(user_id, age)
    order by
      user_id,
      age,
      grouping_id();
  • Vertica 输出结果:

    在 vertica 中输出结果如下图所示:

    group_id_vertica_out.png

  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function grouping_id(character varying, bigint) does not exist

17. grouping

  • 功能说明:

    grouping(expression) 函数用于在 ROLLUP 或 CUBE 查询中标识分组中是否使用了特定列。

  • 测试语句:

    select
      user_id,
      age,
      grouping(user_id),
      grouping(age)
    from
      bdcis.tb_cis_user_induser_day
    group by
      rollup(user_id, age)
    order by
      user_id,
      age,
      grouping_id();
  • Vertica 输出结果:

    在 vertica 中输出结果如下图所示:

    grouping_vertica_out.png

  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function grouping_id(character varying, bigint) does not exist

18. grouping_id

  • 功能说明:

    grouping_id(expression1, expression2, ...) 函数返回一个标识符,表示 ROLLUP 或 CUBE 分组中的行组合,适用于复杂的分组查询。

  • 测试语句:

    select
      user_id,
      age,
      grouping(user_id),
      grouping(age),
      grouping_id(user_id, age) as gr_id
    from
      bdcis.tb_cis_user_induser_day
    group by
      rollup(user_id, age);
  • Vertica 输出结果:

    在 vertica 中输出结果如下图所示:

    grouping_id_vertica_out.png

  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function grouping_id(character varying, bigint) does not exist

19. listagg

  • 功能说明:

    listagg(expression) 函数用于将分组中的字符串连接成一个字符串,通常用于生成逗号分隔的列表。

  • 测试语句:

    select
      a.serv_number,    --用户
      listagg(distinct b.prov_name)
    from
      (
          select
              distinct serv_number
          from
              gs_test.test_function_listagg01
          where
              call_date >= '2024-06-01'
              and call_date <= '2024-06-10'
      ) a,
      gs_test.test_function_listagg02 b
    where
      --a.serv_number =b.serv_number
      --and b.statis_day>=20240310
      b.statis_day <= 20240610
    group by
      1
    order by
      1;
  • Vertica 输出结果:

    在 vertica 中输出结果如下图所示:

    grouping_id_vertica_out.png

  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function listagg(character varying) does not exist

20. max

  • 功能说明:

    max(expression) 函数用于返回表达式中的最大值。

  • 测试语句:

    select
        up_area_code         , --地市
        serv_number          , --号码
        stop_date            , --管理停机时间
        busi_code            , --业务编码
        busi_name            , --业务名称
        max(gsm_call_count)  , --管理停机后通话次数
        max(gsm_new_date)    , --最新通话时间
        max(gprs_call_count) , --管理停机后使用流量次数
        max(gprs_new_date)     --最新流量时间
    from gs_test.test_function_max
    group by up_area_code,serv_number,stop_date,busi_code,busi_name
    order by up_area_code,serv_number;
  • Vertica 输出结果:

    在 vertica 中输出结果如下图所示:

    max_vertica_out.png

  • WutongDB 输出结果:

    在梧桐中输出结果如下图所示:

    max_wutongdb_out.png

21. min

  • 功能说明:

    min(expression) 函数用于返回表达式中的最小值。

  • 测试语句:

    select
      distinct serv_number,
      sum(arrear_fee),
      min(bill_cycle)
    from
      gs_test.test_function_min
    where
      bill_cycle >= '201801'
      and statis_month = 202404
    group by
      serv_number
    order by
      serv_number;
  • Vertica 输出结果:

    在 vertica 中输出结果如下图所示:

    min_vertica_out.png

  • WutongDB 输出结果:

    在梧桐中输出结果如下图所示:

    min_wutongdb_out.png

22. regr_avgx

  • 功能说明:

    regr_avgx(expression1, expression2) 函数返回线性回归方程中x的平均值,适用于回归分析。

  • 测试语句:

    select
      regr_avgx(user_id, age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    86.2508241877663
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function regr_avgx(character varying, bigint) does not exist

23. regr_avgy

  • 功能说明:

    regr_avgy(expression1, expression2) 函数返回线性回归方程中y的平均值,适用于回归分析。

  • 测试语句:

    select
      regr_avgy(user_id, age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    238042663808143
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function regr_intercept(character varying, bigint) does not exist

24. regr_count

  • 功能说明:

    regr_count(expression1, expression2) 函数返回用于线性回归分析的数据对的数量。

  • 测试语句:

    select
      regr_count(user_id, age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    59766114
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function regr_count(character varying, bigint) does not exist

25. regr_intercept

  • 功能说明:

    regr_intercept(expression1, expression2) 函数返回线性回归方程的截距,用于描述 y 与 x 的线性关系。

  • 测试语句:

    select
      regr_intercept(user_id, age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    233871150136412
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function regr_intercept(character varying, bigint) does not exist

26. regr_r2

  • 功能说明:

    regr_r2(expression1, expression2) 函数返回线性回归方程的决定系数(R²),表示回归模型的拟合优度。

  • 测试语句:

    select
      regr_r2(user_id, age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    0.00232118583394925
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function regr_r2(character varying, bigint) does not exist

27. regr_slope

  • 功能说明:

    regr_slope(expression1, expression2) 函数返回线性回归方程的斜率,表示 y 相对于 x 的变化率。

  • 测试语句:

    select
      regr_slope(user_id, age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    48364913738.6734
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function regr_slope(character varying, bigint) does not exist

28. regr_sxx

  • 功能说明:

    regr_sxx(expression1, expression2) 函数返回x的平方和,用于线性回归分析中。

  • 测试语句:

    select
      regr_sxx(user_id, age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    2260241717219.03
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function regr_sxx(character varying, bigint) does not exist

29. regr_sxy

  • 功能说明:

    regr_sxy(expression1, expression2) 函数返回 x 和 y 的协方差乘积(即xy的协方差和),用于线性回归分析中。这是计算回归系数的重要中间值。

  • 测试语句:

    select
      regr_sxy(user_id, age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    109316395681849000000000
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function regr_sxy(character varying, bigint) does not exist

30. regr_syy

  • 功能说明:

    regr_syy(expression1, expression2) 函数返回y的平方和,用于线性回归分析中。这也是回归分析中计算 R² 等指标的重要中间值。

  • 测试语句:

    select
      regr_syy(user_id, age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    2277748713630540000000000000000000000
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function regr_syy(character varying, bigint) does not exist

31. stddev

  • 功能说明:

    stddev(expression) 函数用于计算表达式的样本标准差,衡量数据的分散程度。

  • 测试语句:

    select
      stddev(age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    194.468801380164
  • WutongDB 输出结果:

    在梧桐中,执行结果如下所示:

    194.468801380164

32. stddev_pop

  • 功能说明:

    stddev_pop(expression) 函数用于计算表达式的总体标准差,适用于对整体数据集的标准差分析。

  • 测试语句:

    select
      stddev_pop(age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    194.468799753249
  • WutongDB 输出结果:

    在梧桐中,执行结果如下所示:

    194.468799753249

33. stddev_samp

  • 功能说明:

    stddev_samp(expression) 函数用于计算表达式的样本标准差,这与stddev函数类似,通常在数据分析中作为默认的标准差计算方式。

  • 测试语句:

    select
      stddev_samp(age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    194.489822484151
  • WutongDB 输出结果:

    在梧桐中,执行结果如下所示:

    194.489822484151

34. sum_float

  • 功能说明:

    sum_float(expression) 函数用于计算表达式中所有浮点数值的总和。与sum函数类似,但特别适用于需要处理浮点数的场景。

  • 测试语句:

    select
      sum_float(age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中输出结果如下所示:

    5156872870
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function sum_float(bigint) does not exist

35. ts_first_value

  • 功能说明:

    ts_first_value(value, timestamp) 函数用于在时间序列数据中返回指定时间戳的第一个值,适用于处理时间序列中的首值分析。

  • 测试语句:

    select
      ts_first_value(value, timestamp) as last_value
    from
      gs_test.time_series_date;
  • Vertica 输出结果:

    在 vertica 中,执行结果函数不存在,如下所示:

    Function ts_first_value(int, timestamp) does not exist, or permission is denied for ts_first_value(int, timestamp)
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function ts_first_value(bigint, timestamp without time zone) does not exist

36. ts_last_value

  • 功能说明:

    ts_last_value(value, timestamp) 函数用于在时间序列数据中返回指定时间戳的最后一个值,适用于处理时间序列中的末值分析。

  • 测试语句:

    create table gs_test.time_series_date(
      id int,
      timestamp timestamp default current_timestamp,
      value int
    );
    
    insert into
      gs_test.time_series_date (id, value)
    values
    (1, 10),
      (2, 20),
      (3, 30);
      
    select
      ts_last_value(value, timestamp) as last_value
    from
      gs_test.time_series_date;
  • Vertica 输出结果:

    在 vertica 中,执行结果函数不存在,如下所示:

    Function ts_last_value(int, timestamp) does not exist, or permission is denied for ts_last_value(int, timestamp)
  • WutongDB 输出结果:

    在梧桐中,执行结果函数不存在,如下所示:

    function ts_last_value(bigint, timestamp without time zone) does not exist

37. var_pop

  • 功能说明:

    var_pop(expression) 函数用于计算表达式的总体方差,适用于对整体数据集的方差分析。

  • 测试语句:

    select
      var_pop(age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中,执行结果如下所示:

    37826.290417191
  • WutongDB 输出结果:

    在梧桐中,执行结果如下所示:

    37826.290417190961

38. var_samp

  • 功能说明:

    var_samp(expression) 函数用于计算表达式的样本方差,适用于对样本数据集的方差分析。

  • 测试语句:

    select
      var_samp(age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中,执行结果如下所示:

    37826.2910499167
  • WutongDB 输出结果:

    在梧桐中,执行结果如下所示:

    37826.291049916734

39. variance

  • 功能说明:

    variance(expression) 函数用于计算表达式的样本方差,是var_samp的同义词,通常在数据分析中用作计算数据分布的波动性。

  • 测试语句:

    select
      variance(age)
    from
      bdcis.tb_cis_user_induser_day;
  • Vertica 输出结果:

    在 vertica 中,执行结果如下所示:

    37826.2910499167
  • WutongDB 输出结果:

    在梧桐中,执行结果如下所示:

    37826.291049916734

千钧
7 声望3 粉丝

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