常用操作

  • 1.字符串分割
  • 2.字符串替换
  • 3.获取当前时间
  • 4.获取两个时间点相隔几天
  • 5.时间加减
  • 6.序列号生成
  • 7.多行值拼接
  • 8.字符串拆分成多行
  • 9.字符串加密
  • 10.字符串正则匹配
  • 11.字符串正则截取
  • 12.字段间比较大小
  • 13.有序集聚集函数
  • 14.分组函数
  • 15.窗口函数

1.字符串分割

函数:split_part(String text,delimiter text,field int)
描述:根据delimiter分割string返回生成的第field个子字符串(1为基数)
例子:split_part(‘abc|def|ghi’,’|’,2) --def

2.字符串替换

函数:replace(String text,from text,to text)
描述:把字符串String中出现的所有子字符串from替换成子字符串to
例子:replace(‘abcdefabcdef’,‘cd’,‘XX’) --abXXefabXXef

3.获取当前时间

函数:current_date
描述:当前的日期
例子:SELECT CURRENT_DATE ---- 2019-11-11 date类型

4.获取两个时间点相隔几天

方法一:SELECT to_timestamp(‘2019-11-11’,‘yyyy-mm-dd’) - to_timestamp(‘2019-10-11’,‘yyyy-mm-dd’) interval_day ---- “31 days” interval 类型
方法二:SELECT extract(day from to_timestamp(‘2019-11-11’,‘yyyy-mm-dd’) - to_timestamp(‘2019-10-11’,‘yyyy-mm-dd’)) interval_day ---- 31 double类型

5.时间加减

select ‘2019-11-11 10:00:00’::timestamp + interval ‘10 days 2 hours 10 seconds’ ---- “2019-11-21 12:00:10” timestamp without time zone 类型

6.序列号生成

函数:generate_series(s,e,i)
描述:序列号生成从s生成到e,中间间隔i(默认为0)
例子:SELECT sum(num) from generate_series(1,11,2) num ; ---- 36
实例1 某列相同的数改为不同作为主键 (手机号码原来是相同的,通过序列函数相减,转成主键)
SELECT user_number::numeric - bb
FROM (
select “用户手机号” user_number,row_number() over () rn from bdrpt.user LIMIT 500) aa
,generate_series(1,100) bb
WHERE rn = bb ;

7.多行值拼接

函数:string_agg(str,’|’ order by str)
描述:将str先排序再按照分隔符拼接起来
例子:SELECT id,string_agg(str,’|’ order by str) from (values(‘1’,‘word’),(‘1’,‘database’),(‘2’,‘greenplun’)) t(id,str) group by id; ----
id string_agg
1 database|word
2 greenplun

8.字符串拆分成多行

函数:regexp_split_to_table(str,E’\|’)
描述:将拼接好的str重新拆分
例子:SELECT id,regexp_split_to_table(str,E’\|’) from (values(‘1’,‘word|database|redis’),(‘1’,‘database’),(‘2’,‘greenplun’)) t(id,str) ; ----
id regexp_split_to_table
1 word
1 database
1 redis
1 database
2 greenplun

9.字符串加密

函数:md5 ,hashbpchar
描述:hash算法加密精确度md5 (128位),hashbpchar(32位)
例子:SELECT md5(‘helloworld’) ---- fc5e038d38a57032085441e7fe7010b0 字符串类型
SELECT hashbpchar(‘helloworld’) ---- 252807993 integer类型

10.字符串正则匹配

与like相似,支持正则语法。
例如:匹配’b’或者’d’的模糊匹配。
select ‘abc’ SIMILAR TO ‘%(b|d)%’ ---- t

11.字符串正则截取

解析URL
select substring(url,E’\w+://([\w.]+)’) as host
,split_part(url,’?’,1) as url
,substring(url,E’member[_]?[i|I]d=(\w+)’) as member_id
,regexp_split_to_array(split_part(url,’?’,2),’&’) as paras
from (values(‘https://www.baidu.com/s?ie=UTF-8&wd=greenplum’)) t(url)

12.字段间比较大小

select bill_fee,bill_fee_zd
,greatest(bill_fee,bill_fee_zd)
,least(bill_fee,bill_fee_zd)
from test
where bill_fee<>bill_fee_zd

13.有序集聚集函数

函数:percentile_cont(fraction) WITHIN GROUP (ORDER BY sort_expression)
描述: 连续百分率,返回一个对应于排序中指定分数的值,如有必要就在相邻的输入项之间插值.如中位数如果结果条数是奇书取中间数,如果是偶数是中间两个数相加除以二

函数:percentile_disc(fraction) WITHIN GROUP (ORDER BY sort_expression)
描述: 离散百分率,返回第一个在排序中位置等于或者超过指定分数的输入值
注释:fraction要求0-1,sort_expression支持表达式
例子:
select percentile_cont(0.5) WITHIN GROUP (ORDER BY fee*1000)
,percentile_disc(0.5) WITHIN GROUP (ORDER BY fee*1000)
from (values(1),(3),(4),(8)) col(fee)

14.分组函数

函数:GROUPING(args…)
描述:如果对应的表达式被包含在分组集生成的结果行的分组条件中,那么每位是0, 如果不是,则为1。
例子:
select city_code,net_type_code
,GROUPING(city_code,net_type_code) rn
,sum(bill_fee)
from test
GROUP BY ROLLUP(city_code,net_type_code)
order by city_code,net_type_code

函数:GROUPING SETS、CUBE和ROLLUP
例子1:
select city_code,net_type_code,flag_prod_structure_change
,sum(bill_fee)
from anrpt.rpt_busi_user_income_analyse_info_m_hb_1_prt_p_201807
group by grouping sets((city_code,net_type_code),(city_code,flag_prod_structure_change),(city_code,net_type_code,flag_prod_structure_change))
order by city_code,net_type_code,flag_prod_structure_change

例子2:
select city_code,net_type_code,flag_prod_structure_change
,sum(bill_fee)
from anrpt.rpt_busi_user_income_analyse_info_m_hb_1_prt_p_201807
group by cube (city_code,net_type_code,flag_prod_structure_change)
order by city_code,net_type_code,flag_prod_structure_change

例子3:
select city_code,net_type_code,flag_prod_structure_change
,sum(bill_fee)
from anrpt.rpt_busi_user_income_analyse_info_m_hb_1_prt_p_201807
group by rollup(city_code,net_type_code,flag_prod_structure_change)
order by city_code,net_type_code,flag_prod_structure_change

15.窗口函数

函数:row_number()
描述:当前行在其分区中的行号,从1计

函数:rank()
描述:带间隙的当前行排名; 与该行的第一个同等行的row_number相同

函数:dense_rank()
描述:不带间隙的当前行排名; 这个函数计数同等组

函数:percent_rank()
描述:当前行的相对排名: (rank- 1) / (总行数 - 1)

例子:
select id,fee
,row_number() over (partition by id order by fee) row_number
,rank() over (partition by id order by fee) rank
,dense_rank() over (partition by id order by fee) dense_rank
,percent_rank() over (partition by id order by fee) percent_rank
from (values(1,3),(1,4),(1,4),(1,5),(2,8)) col(id,fee)

上一篇:【R】linux上安装R及使用shell调用加传参

下一篇:【gp数据库】统计常用窗口函数详解

【gp数据库】你可能不知道却超级实用的函数相关推荐

  1. 计算机故障维修要遵循什么原则,超级实用的六条法则教你快速搞定电脑故障维修!...

    超级实用的六条法则教你快速搞定电脑故障维修! 发布时间:2015-06-03 14:31:39   作者:佚名   我要评论 今天小编给大家推荐的电脑故障维修通用法则,是很实用的哦,大家可以收藏起来好 ...

  2. 一款超级实用的车辆总线分析系统—VehicleCAN

    ** 一款超级实用的车辆总线分析系统-VehicleCAN ** 汽车CAN总线全称为"控制器局域网(Controller Area Network)",是一种能有效支持分布式控制 ...

  3. 如何尽快掌握计算机技能,10个超级实用的电脑技巧,1秒完成操作,你一定要掌握!...

    10个超级实用的电脑技巧,1秒完成操作,你一定要掌握! 2019-12-14 20:54:56 9点赞 27收藏 1评论 hello,大家好! 工作辛苦,不如给生活加点"料"! 很 ...

  4. 4个超级实用的自媒体素材网站

    有什么高质量的视频素材网站推荐吗?做短视频运营肯定少不了要找素材,但是很多新人都不知道有什么地方可以找素材,要么就是觉得素材质量不够高.别急,今天就给大家推荐4个超级实用的视频素材网站,帮助你快速搞定 ...

  5. java轻量级并行工具类_16 个超级实用的 Java 工具类

    原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...

  6. APICloud开发者进阶之路 | 超级实用技巧

    金秋9月,脑海还是北京的"中非合作蓝"!今天按照惯例,柚子君还是要督促大家充充电的! 本周<30天,App开发从0到1>将要给大家分享第十章超级实用技巧,我们精选了其中 ...

  7. 前端技巧|Chrome上4款超级实用的插件!

    作为一个前端程序猿,你打开他的Chrome浏览器,在里面肯定会看到不少的插件,这些插件简直好用到不用太方便.今天小千就来给大家介绍4款超级实用的插件,不需要懂前端就能轻松使用,错过就是一个亿哦~~ 1 ...

  8. Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结(超级实用)以及以Json格式和form-data格式提交数据

    我总结的不是很全,这位博主介绍的十分详细:超级实用 https://blog.csdn.net/guohaosir/article/details/78942485 Retrofit 以Json格式提 ...

  9. APP技巧:推荐6款超级实用的APP软件,赶快下载试试吧!

    今天小编给大家6款超级实用的App软件,大家赶快下载试试吧. 01*ONE·一个 推荐理由:简约的新媒体阅读平台. 生活中往往有太多的碎片化时间,比如等公交.上厕所.排队,我们可以利用这些碎片化的时间 ...

  10. 分享5个冷门而超级实用的在线网站,大家赶紧来看看吧!

    今天和大家分享5个冷门而超级实用的在线网站,大家赶紧来看看吧! 1.网站配色-Adobe color 网站:https://color.adobe.com/zh/ 只需要在网上找到一张有你喜欢的颜色的 ...

最新文章

  1. WebService调用(基于KSOAP2)
  2. vb鼠标涂鸦板的制作
  3. Git Flow分支策略与Azure DevOps相关功能简介
  4. sqlserver差异备份3117
  5. spring 读取配置文件
  6. 电子政务的着力点---紫云舆情服务
  7. laravel连接mysql连接数过多_php – Laravel 4和MySQL的连接太多了
  8. Origin下载速度慢怎么办
  9. 能上QQ但是打不开网页
  10. html用百度网盘怎么看,百度网盘怎么使用?别人给了我一串字母
  11. C++ 万年历、生肖判断、计算第几天
  12. 20届最难毕业的前端程序员的一年前端工作经验总结
  13. 我的世界电脑正版服务器地址大全,《我的世界》服务器地址大全 各个服务器一览分享...
  14. 天黑请闭眼服务器维护中,天黑请闭眼!
  15. java课程设计 华容道_JAVA课设华容道总的
  16. Jupyter Notebooks 入门
  17. E签宝的接口对接PHP代码演示
  18. [野狐行网游研究][一期][8.17更新]
  19. 发生身份验证错误。要求的函数不受支持(远程连接)
  20. 在云平台部署flask项目

热门文章

  1. 手机麦克风声音太大_让手机麦克风声音变大的软件
  2. 数字信号处理 第三版 西安电子科技大学出版 第一章 课后题 编程题 14 15 16 17 18
  3. php运算符包括,php运算符有哪些 - php完全自学手册 - php中文网手册
  4. VSCode Setting Sync同步设置
  5. linux系统svn安装教程,Linux下SVN安装配置
  6. Securing Services with Spring Cloud Gateway
  7. LPDDR4协议规范之 (四)命令和时序
  8. RMXP脚本解析(四):Window_Base
  9. 普通用户添加systemctl 自定义服务的开机启动项
  10. vs2010中svn使用教程_VS2010中使用ankhSVN | 学步园