sql-函数

SQL函数及报错问题合集

  • 一、sql函数
    • 1.日期函数(**Hive**)
      • 1.1日期减少函数: date_sub
      • 1.2日期增加函数:date_add
      • 1.3日期格式转化函数:date2datekey/datekey2date
    • 2.字段去重
      • 2.1 单字段去重(distinct)
      • 2.2 多字段去重
    • 3.众数计算
    • 4.case when 两种方式比较
    • 5.排名函数
    • 6.窗口函数
  • 二、sql报错
    • 1.重复嵌套聚合

一、sql函数

1.日期函数(Hive

注:只能识别“yyyy-mm-dd”日期格式

1.1日期减少函数: date_sub

语法: date_sub (string startdate, int days)

返回值: string

说明:返回开始日期startdate减少days天后的日期。

举例:

hive> select date_sub('2012-12-08',10) from lxw_dual;

小思考:同一份代码中,date_sub 有些stringdate需要引号,有些不需要

select s1.city_name,s1.base_sku_id,s1.link,count(s1.new_dt) `负毛利天数`
from
(select s.city_name,s.base_sku_id,s.link,date_sub(datekey2date(s.dt),s.rank) new_dt
from
(select 
t.city_name,t.base_sku_id,t.link,t.dt ,row_number() over(PARTITION BY t.link order by t.dt) rank
from
(SELECT a.dt,
 concat(a.city_name,a.base_sku_id ) link,
a.city_name,a.category1_name,a.category2_name,a.category3_name,a.base_sku_id,sum(a.sku_gmv) sku_gmv,sum(a.sku_init_gross_income_amt) sku_init_gross_income_amt
from mart_mall.app_cube_wide_view a
-- WHERE datekey2date(a.dt) between  date_sub($$begindate,7) and $$begindate
where datekey2date(a.dt) BETWEEN date_sub('$$begindate',7) and date_sub('$$begindate',1)

1.2日期增加函数:date_add

语法: date_add (string startdate, int days)
返回值:string
说明:返回开始日期startdate增加days天后的日期。
注:也可以date_add (string startdate, -int days)
表示减少天数。

1.3日期格式转化函数:date2datekey/datekey2date

说明:date类型与datekey类型转换函数

select date2datekey('2012-12-29'),datekey2date(20121229)
from dim.city
limit 1

你可能感兴趣的:(SQL,sql,hive)