一、常用聚合函数

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笔记的更多相关文章

  1. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  6. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

  7. springMVC学习笔记--知识点总结1

    以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...

  8. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  9. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

随机推荐

  1. web自动化:IE11运行Python+selenium程序

    from selenium import webdriver # 运行此脚本前必须按要求修改注册表'''[HKEY_CURRENT_USER\Software\Microsoft\Internet E ...

  2. VMware虚拟机常见问题(针对目前我所学的而言,还会不断更新)

    VMware虚拟机常见问题(针对目前我所学的而言,还会不断更新) 自己电脑的telnet Client是否打开 在控制面板->程序->打开或关闭Windows功能 虚拟机的telnet是否 ...

  3. P5591-小猪佩奇学数学【单位根反演】

    正题 题目链接:https://www.luogu.com.cn/problem/P5591 题目大意 给出\(n,p,k\)求 \[\left(\sum_{i=0}^n\binom{n}{i}p^i ...

  4. 深入浅出WPF-11.Template(模板)01

    模板 在WPF中,模板可以分为两大类: 控件模板(ControlTemplate)是算法内容的表现形式,一个控件怎么组织其内部的结构才能让它更符合业务逻辑,让用户操作更舒服,都是由她控制的.它决定了控 ...

  5. PC Register简介

    PC Regiter介绍: JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息,CPU只有把数据装载 ...

  6. 前端VUE基于gitlab的CI_CD

    目录 CI 1.Gitlab的CI 1.1 GitLab-Runner 1.2 .gitlab-ci.yml 1.3 配置.gitlab-ci.yml 1.3.1 Pipeline概念 1.3.2 S ...

  7. ES6箭头函数(箭头函数和普通函数的区别)

    箭头函数 一个参数 // 只有一个参数 // f : 函数名称 // v : 函数参数 // v+v : 函数内容 let f=v=> v+v console.log(f(10)) //20 两 ...

  8. 洛谷5024 保卫王国 (动态dp)

    qwq非正解. 但是能跑过. 1e5 log方还是很稳的啊 首先,考虑最普通的\(dp\) 令\(dp1[x][0]表示不选这个点,dp1[x][1]表示选这个点的最大最小花费\) 那么 \(dp1[ ...

  9. LCT模板(学习笔记)(洛谷3690)(加边,删边,修改点权)

    最近学习了一波LCT qwq 强势安利Flashhu的博客!!!!! 真的特别详细(可惜我不会弄链接) 如果有想要学习\(LCT\)的同学,可以直接看他的博客 我这里就简单写一点自己的体会啊. \(L ...

  10. HTML5背景知识

    目录 HTML5背景知识 HTML的历史 JavaScript出场 浏览器战争的结束 插件称雄 语义HTML浮出水面 发展态势:HTML标准滞后于其使用 HTML5简介 新标准 引入原生多媒体支持 引 ...