SQL函数(Redshift)

Redshift SQL

函数解释Sql原始数据返回值
SPLIT_PART切分字符串select etl_date,split_part(etl_date,‘-’,1) as new_etl_date from analytical_martph_omtdb.TM_OMT_Inmkt_Sales_Agg_NOT_ONC;2023-05-25 20:01:512023
SUBSTRING截取字符串(column,1,4):从1开始截取到4位置停止返回所截取到的字符串select etl_date,substring(etl_date,1,4) as new_etl_date from analytical_martph_omtdb.TM_OMT_Inmkt_Sales_Agg_NOT_ONC;2023-05-25 20:01:512023
TRIM如果不写指定字符,则删除前面空格和后面空格或删除掉指定字符后返回字符串select trim(‘"’ FROM ‘“dog”’); select trim(from " gg ");“dog”dog
CURRENT_TIMESTAMP获取当前时间戳SELECT CURRENT_TIMESTAMP;2023-05-25 20:01:51
EXTRACT返回表达式中的日期或时间部分select extract(day from timestamp ‘2009-09-09 12:08:43’);9
DATE_PART返回表达式中的日期部分SELECT DATE_PART(week, timestamp ‘2009-09-09 12:08:43’);37
AGE返回两个表达式中Year,month,day,hour,minute,s。差异的部分。Select age(‘2023-05-05 12:33:22’,’2022-06-06 12:33:22’)0 years 10 mons 29 days
NOW返回当前时间SELECT NOW();2023-05-05 12:33:22
DECODE将一个特定值替换成另一个特定值或默认值select marketname,decode(marketname,‘零售连锁总部’,‘1’,‘UnKnown’) as decode_marketname from analytical_martph_OMTDB.TM_OMT_Kan_Inmkt_Sales_Agg;零售连锁总部,线上商业零售1,UnKnown
NVL返回列中第一个不为null的列,如果全为null那么返回null.表达式类型必须全都一致,不然报错select nvl(product,year) from analytical_martph_OMTDB.TM_OMT_Kam_Inmkt_Salaes_Agg;null,20182018
NVL2如果表达式为NULL返回第二个参数,反之返回第一个参数Select nvl2(null,1,0),nvl2(2,1,0)null,20,1
CEIL向上取整select ceil(123,22);123.22124
FLOOR向下取整select floor(123.78);123.78123
GREATEST/LEAST:从任意表达式的列表中返回最大值或最小值select year, greatest(year) from from analytical_martph_OMTDB.TM_OMT_Kan_Inmkt_Sales_Agg;2019,2020,20212021
ASCII返回字符串的第一个字符的ASCII码select ascii(‘year’);y127
CHR返回与输入的 ASCII 码匹配的字符select chr(127);127y
CONCAT拼接两个表达式,并返回select yearmonth,concat(year,month) as new_yearmonth from analytical_martph_OMTDB.TM_OMT_Kam_Inmkt_Salaes_Agg;2018,02201802
NEXT_DAY返回给定日期后第一个表达式的日期数Select next_day(‘2023-05-29 19:22:00’,’Mon’);2023-05-292023-06-05
LAST_DAY返回该月最后一天的日期Select last_day(‘2023-05-19’);2023-05-192023-05-31
ADD_MONTHS将指定的月数添加到日期或时间戳select add_months(‘2023-05-24 19:22:00’,2)2023-05-24 19:22:002023-07-24 19:22:00
MONTHS_BETWEEN返回两个日期之间相隔的月数Select months_between(‘2023-06-19’,’2023-05-19’);1
ROUND四舍五入,round(123,22,2) 保留两位小数select round(‘123.0000’); select round(‘123.66,1);123.0000,123.66123,123.7
MD5MD5加密select md5(‘dssddsds’);dssddsdssssssss
TRUNC将表达式的值截取到整数select trunc(123.23);123.23123
TO_CHAR将时间戳或数值转换成字符串类型Select to_char(timestamp ‘2023-05-22 02:28:16’,’yyyy-mm-dd hh:mm:ss’);
TO_DATE:将字符串类型转换成日期型select to_date(‘20190630’, ‘YYYYMMDD’);
TO_NUMBER将字符串转换成数值。格式 ‘99D999’ 指定要转换的字符串包含五位数,其中小数点在第三位select to_number(‘154.8’, ‘999D9’);
POSITION返回指定字符串在字符串中的位置select position (‘dag’ in ‘asdag’);asdag3
REPLACE把表达式中的旧字符替换成新字符select year,month,replace(year,2018,2000) as new_year,replace(month,0,1) as new_month from analytical_martph_OMTDB.TM_OMT_Kam_Inmkt_Salaes_Agg order by year,month;2018,02020,1
MOD取两个表达式的余数select mod(20,5); -----0 select mod(23,5); ----- 30,3
CAST修改数据类型变成指定数据类型select cast(year as nvarchar) from analytical_martph_OMTDB.TM_OMT_Kam_Inmkt_Salaes_Agg;
COALESCE与nvl一样,返回第一个不为空的表达式
DATE_ADD按照给定年,月,日,小时,分钟,增加并返回值select dateadd(year,2,etl_date) as new_etl_date_year,dateadd(month,2,etl_date) as new_etl_date_month,dateadd(day,2,etl_date) as new_etl_date_day,dateadd(hour,2,etl_date) as new_etl_date_hour,dateadd(minute,2,etl_date) as new_etl_date_minute from analytical_martph_OMTDB.TM_OMT_Kam_Inmkt_Salaes_Agg;2018-05-05 10:10:102020-07-07 12:12:12
LENGTH返回字符串的长度与len相同select marketname,length(marketname) as len from analytical_martph_OMTDB.TM_OMT_Kam_Inmkt_Salaes_Agg where yearmonth = ‘201802’;零售连锁总部5
UPPER将字符串变成大写select upper(‘abc’);abcABC
LOWER将字符串变成小写select lower(‘ABC’);ABCabc
CURRENT_DATE以默认格式 YYYY-MM-DD 返回当前日期select current_date;2023-05-05
CURRENT_TIME返回当前时间select current_time;12:12:09
DATE_DIFF返回两个日期或表达式的日期部分之间的差异select datediff(day, start_date, end_date) as duration from date_table;原始数据返回值
DATE_TRUNC返回时间戳中的日期Select date_trunc(‘day’,’2023-05-22 02:28:16’);2023-05-2222
CONVERTCONVERT 与cast函数相似,但不会转换源表中的类型select convert(varchar,year) from table_name
CASECase when then else endSelect year,Case whenYear <= 2018 then ‘group2018’WhenYear > 2018 and year <= 2019 then ‘group2019’WhenYear> 2019 and year <= 2020 then ‘group2020’Else ‘groupother’End as year_groupFrom analytical_martph_OMTDB.TM_OMT_Kam_Inmkt_Sales_Agg order by 1 desc;
REGEXP_INSTR:在字符串中搜索正则表达式模式并返回指示匹配子字符串的开始位置的整数。如果未找到匹配项,此函数将返回 0Select regexp_instr(‘ddd222’,’[0-9]’)ddd2224
REGEXP_REPLACE:在字符串中搜索正则表达式模式并将该模式的每个匹配项替换为指定字符串SELECT f1,regexp_replace(f1,‘[A-Z]{3}’,‘ABC’) from enriched_prestage_omtdb.tp_turnover_rate_init where f1 = ‘STH’;STHABC
REGEXP_SUBSTR通过在字符串中搜索正则表达式模式,返回字符串中的字符。Select regexp_substr(‘ddd222’,’[0-9].*’)222
LAGLAG 窗口函数返回位于分区中当前行的上方(之前)的某个给定偏移量位置的行的值。select yearmonth,year,region,product,lag(product,1) over (order by yearmonth,year,region) from analytical_martph_omtdb.tm_omt_we_inmkt_sales_agg where year = 2022 order by yearmonth,year,region
LEADLEAD 窗口函数返回位于分区中当前行的下方(之后)的某个给定偏移量位置的行的值。Select foodtype,lead(foodtype) over (order by foodtype) from food_sex原始数据返回值
LISTAGG聚合函数,根据分组后的order by 对该分组的行进行排序,然后将返回值串联成一个字符串,最后进行返回.注意的地方,如果语句包含多个within group ,那么每个within group后的order by必须是相同值select listagg(yearmonth,‘,’) within group(order by yearmonth desc) from analytical_martph_OMTDB.TM_OMT_Kam_Inmkt_Salaes_Agg;202012202012,202012,202011
RANK根据order by 的结果进行排名select distinct yearmonth,rank() over(order by yearmonth) as rank_yearmonth from analytical_martph_OMTDB.TM_OMT_Kam_Inmkt_Salaes_Agg order by yearmonth,rank_yearmonth;201800,201801201800,1 201801,3
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值