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 ...
随机推荐
- mapper-spring-boot-starter 主要作用是
今天是第一次接触到 这个场景启动器内心中真是一片的茫然,学习了这么长时间我居然还不知道有这个的存在今天好好查一查资料 参考资料(https://blog.csdn.net/crq1205/articl ...
- 牛客练习赛89E-牛牛小数点【数论】
正题 题目链接:https://ac.nowcoder.com/acm/contest/11179/E 题目大意 定义\(f(x)\)表示\(\frac{1}{x}\)的混循环节长度(如果没有循环节就 ...
- Python接口自动化测试实战-----附源码
目录 1. 接口定义 2. 基本流程 3. 需求分析 4. 用例设计 5. 脚本开发 6. 结果分析 接口定义: 接口普遍有两种意思,一种是API(Application Program Interf ...
- 浏览器输入URL之后,HTTP请求返回的完整过程
1.输入url,按下回车时,先做一个redirect(重定向),因为浏览器可能记录本机的地址已经永久跳转成新的地址,所以一开始浏览器就先要判断下需不需要重定向,以及重定向到哪里:2.然后第二步就是看A ...
- Java实现两数之和等于二十
找出数组中两个数字之和为20的两个数 代码实现 public static void main(String[] args) { // TODO Auto-generated method stub ...
- B站视频:CocosCreator Bundle 特性三个实例详解,轻松实现大厅子游戏模式
详细内容:https://forum.cocos.org/t/topic/112146
- 你了解一条sql的执行顺序吗
sql是后端开发人员经常碰到的问题,我们经常会写这样的sql:select name,id from student where id=12 order by id desc,把这条sql放到数据库中 ...
- 如何利用Prometheus监控你的应用(此列子是对于golang sdk进行运用)
Prometheus作为一套完整的开源监控接近方案,因为其诸多强大的特性以及生态的开放性,俨然已经成为了监控领域的事实标准并在全球范围内得到了广泛的部署应用.那么应该如何利用Prometheus对我们 ...
- 初识Linux shell
目录 初识Linux shell Linux 深入探究Linux内核 系统内存管理 交换空间 页面 换出 软件程序管理 Linux中的进程 Linux系统的运行级 硬件设备管理 插入设备驱动代码的方法 ...
- UltraSoft - Beta - Scrum Meeting 5
Date: May 21st, 2020. Scrum 情况汇报 进度情况 组员 负责 今日进度 q2l PM.后端 修复了课程通知链接的bug Liuzh 前端 暂无 Kkkk 前端 增加消息中心板 ...