Hive SQL基础及优化

本文详细介绍了Hive SQL的基础语法,包括单表查询、聚合函数、窗口函数的使用,以及SQL优化策略。通过实例解析了如何写出高效SQL,如处理数据倾斜和分组首末条记录的方法。此外,还探讨了各种函数的应用,如数据类型转换、日期处理、条件函数等,助力提升SQL编写能力。
摘要由CSDN通过智能技术生成

SQL

SQL基础语法

基本含义(与excel对应)

库(文件夹)
表(Excel名称)
字段(Excel第一行,包含字段名,字段数据类型、注释)
分区字段(sheet表,一般是日期,相当于在查询的时候提升速度)(必须限制分区,否则hive会报错)

数据来源

数据地图(查寻需要的表)
KwaiBI(查询平台)

Hive SQL查询语法

select[all | distinct] select_expr,…
from
[where]
[group by]
[having]
[order by]
[limit [offset,]rows]

单表查询语法和使用

1,select

select a+b as 'cnt’
from
where

2,group by*

group by后,必须包含group by的字段,剩余内容为分组的计算结果

select pic, count(1) as cnt
from
where p_date =
having count(1)>1000

3,聚合函数

count(*) :包括null
count(expr):不包括null
count(DISTINCT expr):去重后行数,不包括null

sum(col)
sum(DISTINCT col):去重求和

avg(col),avg(DISTINCT col):去重求平均

collect_set(col):拼成去重数组
在hive中求出一个数据表中在某天内首次登陆的人;

select a.id
from (select id,collect_set(time) as t from t_action_login where time<='20150906' group by id) as a where size(a.t)=1 and a.t[0]='20150906';

123@163.com | [“20150620”,“20150619”] |
| abc@163.com | [“20150816”] |
| cde@qq.com | [“20150606”,“20150608”,“20150607”,“20150609”,“20150613”,“20150610”,“20150616”,“20150615”] |

collect_list(col):拼成数组

4.行转列

统计20200701北京和成都活跃用户数

法1:group by + count(1)

select 
	city,p_date,count(1) as cnt
	from biao
where
	p_date = '20200701' and city in ('北京','成都')
group by city,p_date

法2:更方便常用 case where

select 
	p_date,
	sum(if(city = '北京',1,0)) as 'beijing_user_cnt',
	sum(if(city = '成都'1,0)) as 'chengdu_user_cnt'
from biao
	
<
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值