测试环境:
- 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可以直接使用该函数,输出结果如下图所示:
WutongDB 输出结果:
在梧桐数据库输出结果如下图所示:(与Vertica精度不同)
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_Sphere
或ST_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_Distance
或ST_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可以直接使用该函数,输出结果如下图所示:
WutongDB 输出结果:
在梧桐数据库输出结果如下图所示:(与Vertica精度不同)
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可以直接使用该函数,输出结果如下图所示:
WutongDB 输出结果:
在梧桐数据库输出结果如下图所示:(与Vertica精度不同)
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_uuid
或gen_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可以直接使用该函数,输出结果如下图所示:
WutongDB 输出结果:
在梧桐数据库输出结果如下图所示:(与Vertica精度不同)
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可以直接使用该函数,输出结果如下图所示:
WutongDB 输出结果:
在梧桐数据库输出结果如下图所示:(与Vertica精度不同)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。