hivesql笔记
一、常用聚合函数
count():计数 count(distinct 字段) 去重统计
sum():求合
avg():平均
max():最大值
min():最小值
二、hivesql执行顺序
from --> where --> group by --> having --> select--> order by--> limit
三、常用函数
1.毫秒时间戳转日期精确到秒
select from_unixtime(cast(1636462527000/1000 as int),'yyyy-MM-dd hh:mm:ss')
2.计算日期的间隔
select datediff("2021-10-01", "2021-10-30") 或 select datediff("2021-10-01", to_date("create_time"))
3.条件函数case when
select
case when age<20 then '20以下'
when age>=20 and age <=30 then '20~30岁'
else '40岁以上' end as age_type
from user_info
4.多重case when
select
source,
userid,
case when nvl(cast(source as bigint), 0) =1 then(
case when nvl(cast(userid as string), '') <>'' then'小程序来源真实用户'
else '小程序来源非真实用户' end)
when nvl(cast(source as bigint), 0) =2 then(
case when nvl(cast(userid as string), '')<>'' then'h5来源真实用户'
else 'h5来源非真实用户' end)
else "其他来源未知用户"
end as source_user
from ods.user_base
where dd='2021-10-28'
5.条件语句 if判断
>0定义为正规渠道 否则是非正规渠道
select
if(cast(source_leve as bigint) >0 ,'正规渠道','非正规渠道') as source_qd,
count(1)
from
ods.xcx_base
where dd='2021-10-28'
group by if(cast(source_leve as bigint) >0 ,'正规渠道','非正规渠道')
6.字符串函数-字符串截取
select substr("2021-10-27",1,7) as month --从第一位街区到7位
substr("2021-10-27",2) as month --从第二位开始 一值截取到最后一位
7.字符串拼接
concat('haode',userid,'okok') as new_str --拿表里字段左右拼接
8.map数据类型和字符串类型map数据获取
第一种 字符串类型的map数据{"phone":"1234", "name":"z张三"}
select get_json_object('{"phone":"1234","name":"za"}', '$.phone') as phone
第二种 map数据类型
select 字段["phone"] as phone
四、表连接
1.inner join 缩写join 查询交集的数据
例如 user表1、user表2 需要查出在user表1和user表2同时存在的userid
select * from user表1 a
join user表2 b
on a.userid=b.userid
join示例2: 客户表和粉丝表 查询在2021-09-19这天既成为客户也成为了粉丝的用户id
select
a.userid
from
(select distinct userid from 客户表 where create_time='2021-09-19') a
join
(select distinct userid from 粉丝表表 where create_time='2021-09-19') b
on a.userid=b.userid
2.left join /right join 进行左链接/右链接 没有匹配上显示null
3.full join 全链接 互补left join 和left join过滤掉的数据
4.union all上下合并两张表 注意:两张表的字段名一致、字段顺序一致、没有连接on条件、不去重不排序 效率快
5.union:两张表的字段名一致、字段顺序一致、没有连接on条件 表连接时去掉重复记录,按照字段顺序进行排序 效率比较慢
五、 row_number()、DENSE_RANK()、RANK()窗口函数
row_number() 相同的值也会分第一 第二
DENSE_RANK() 相同的值 排名是一样的 10个一样的值那么就有十个第一
RANK() 相同的值如果占用了一个序号还么会跳过 比如取top3 100 100 80 那么排序名次则是 第一 第一 第三
例:根据日期分组 和店铺id分组取出每个天没个店铺 top3的应收金额
select
*
from(
select
dd,
mid,
should_pay_amt,
row_number() over(partition by dd,mid order by should_pay_amt desc) as rn
from ods.pay_order_detail
where dd between "2021-10-28" and "2021-10-30"
) as a
where rn<=3
hivesql笔记的更多相关文章
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
- springMVC学习笔记--知识点总结1
以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
随机推荐
- 深度理解JVM
1. 环境搭建 安装jdk 2. 内存溢出场景模拟 public class Test01 { public static void main(String[] args) { //测试内存溢出 ...
- [转载]提升SQLite数据插入效率低、速度慢的方法
转载地址:http://blog.csdn.net/chenguanzhou123/article/details/9376537#,如果有侵犯原创,请留言告知,本人会及时删除. 前言 SQLite数 ...
- Redis之品鉴之旅(六)
持久化 快照的方式(RDB) 文件追加方式(AOF) 快照形式: save和bgsave能快速的备份数据.但是.........., Save命令:将内存数据镜像保存为rdb文件,由于redis是单线 ...
- 一、mybatis入门案例
今天学习了mybatis框架,简单记录一下mybatis第一个入门案例,目标是使用Mybatis作为持久层框架,执行查询数据的SQL语句并且获取结果集 基本步骤: 物理建模 逻辑建模 引入依赖 创建持 ...
- 11.2.0.4 ORA-15025 ORA-27041 IBM AIX RISC System/6000 Error: 13: Permission denied
ASM device error ORA-27041 ORA-15025 ORA-15081 (Doc ID 1487475.1) 描述总结:数据库的alert中发现大量ORA-27041 ORA-1 ...
- PLSQL安装,PLSQL汉化,激活
一)准备工作 1.点击下载PLSQL:https://www.allroundautomations.com/registered-plsqldev/.本次安装的是12.0.7,安装版本为64位 2. ...
- SQL Server链接服务器信息查询
exec sp_helpserver --查询链接服务器select * from sys.servers --查询链接服务器链接地址
- 技术番外篇丨Github Action CI/CD
起源 看到.Net群里再聊CI/CD,我就这里分享一下我目前自己一些小东西的做法,我目前在Github有一个自己私有的组织,里面存放了我的部分商业化项目,早期我采用Jenkins用Webhooks进行 ...
- HttpServletRequest 入门
1. request对象和response对象的原理 request和response对象是由服务器创建的.我们来使用它们 request对象是来获取请求消息,response对象是来设置响应消息 2 ...
- C++ 与 Visual Studio 2019 和 WSL
Visual Studio 使用 C++ 的 Linux 开发(WSL) https://devblogs.microsoft.com/cppblog/c-with-visual-studio-201 ...