一、常用聚合函数

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. windows kubectl 远程操作k8s

    在windows 电脑上配置kubectl远程操作kubernetes 一.下载windows版的kubectl可执行文件 下载地址 二.创建.kube 建议使用git bash cd ~ mkdir ...

  2. vue+element UI 使用select元素动态的从后台获取到

    VUE select元素动态的从后台获取到 <el-form-item label="选择店铺"> <el-select v-model="value& ...

  3. 从零入门 Serverless | 在线应用的 Serverless 实践

    作者 | 唐慧芬(黛忻) 阿里云产品专家 导读:毫无疑问,Serverless 能够在效率和成本上给用户带来巨大收益.那具体到落地又应该怎么做呢?本文就给大家详细解读 Serverless 的落地实践 ...

  4. MySQL中如何选择合适的备份策略和备份工具

    ​数据库备份的重要性毋庸置疑,可以说,它是数据安全的最后一道防线.鉴于此,对于备份,我们通常会做以下要求: 多地部署 对于核心数据库,我们通常有两地三中心的部署要求.对于备份来说,也是如此. 一个备份 ...

  5. GoLang设计模式11 - 备忘录模式

    备忘录模式是一种行为型设计模式.这种模式允许我们保存对象在某些关键节点时的必要信息,以便于在适当的时候可以将之恢复到之前的状态.通常它可以用来帮助设计撤销/恢复操作. 下面是备忘录设计模式的主要角色: ...

  6. IEEE754浮点数的转换

    将十进制数转换为单精度浮点数 如何将十进制数转换为单精度浮点数参考 首先要知道 IEEE浮点标准:V=(-1)^s * M * 2^E 1.符号(sign)s决定这个数是负数(s=1)还是正数,0(s ...

  7. for...in和Object.keys()区别

    区别: for in 用来枚举对象的属性,某些情况下,可能按照随机顺序遍历数组元素 object.keys() 可以返回对象属性为元素的数组,数组中属性名顺序和for in比那里返回顺序一样 ---f ...

  8. 【数据结构与算法Python版学习笔记】图——拓扑排序 Topological Sort

    概念 很多问题都可转化为图, 利用图算法解决 例如早餐吃薄煎饼的过程 制作松饼的难点在于知道先做哪一步.从图7-18可知,可以首先加热平底锅或者混合原材料.我们借助拓扑排序这种图算法来确定制作松饼的步 ...

  9. [CSP-S 2021] 回文

    题目描述: 给定正整数 n 和整数序列 a1, a2,-,a2n,在这 2n 个数中,1, 2,-,n 分别各出现恰好 2 次.现在进行 2n 次操作,目标是创建一个长度同样为 2n 的序列 b 1, ...

  10. sort方法和自定义比较器的写法

    摘要 在做一些算法题时常常会需要对数组.自定义对象.集合进行排序. 在java中对数组排序提供了Arrays.sort()方法,对集合排序提供Collections.sort()方法.对自定义对象排序 ...