当前位置: 首页 > news >正文

hive常用SQL函数及案例

1 函数简介

Hive会将常用的逻辑封装成函数给用户进行使用,类似于Java中的函数。
好处:避免用户反复写逻辑,可以直接拿来使用。
重点:用户需要知道函数叫什么,能做什么。
Hive提供了大量的内置函数,按照其特点可大致分为如下几类:单行函数、聚合函数、炸裂函数、窗口函数。
以下命令可用于查询所有内置函数的相关信息。

(1)查看系统内置函数

show functions;

(2)查看内置函数用法

 desc function upper;

(3)查看内置函数详细信息

 desc function extended upper;

2 单行函数

单行函数的特点是一进一出,即输入一行,输出一行。
单行函数按照功能可分为如下几类: 日期函数、字符串函数、集合函数、数学函数、流程控制函数等。

(1)算术运算函数

在这里插入图片描述

案例实操:查询出所有员工的薪水后加1显示

select sal + 1 from emp;

在这里插入图片描述

3 数值函数

(1)round:四舍五入

select round(3.3);

在这里插入图片描述

(2)ceil:向上取整

select ceil(3.1) ;

在这里插入图片描述

(3)floor:向下取整

select floor(4.8);

在这里插入图片描述

4 字符串函数

(1) substring:截取字符串

语法一:substring(string A, int start)
返回值:string
说明:返回字符串A从start位置到结尾的字符串
语法二:substring(string A, int start, int len)
返回值:string
说明:返回字符串A从start位置开始,长度为len的字符串
说明:获取第二个字符以后的所有字符:
在这里插入图片描述
说明:获取倒数第三个字符以后的所有字符

 select substring("atguigu",-3);

在这里插入图片描述
说明:从第3个字符开始,向后获取2个字符

select substring("atguigu",3,2);

在这里插入图片描述

(2) replace :替换

语法:replace(string A, string B, string C)
返回值:string
说明:将字符串A中的子字符串B替换为C

select replace('atguigu', 'a', 'A')

在这里插入图片描述

(3)regexp_replace:正则替换

语法:regexp_replace(string A, string B, string C)
返回值:string
说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符。

select regexp_replace('100-200', '(\\d+)', 'num') 

在这里插入图片描述

(4)regexp:正则匹配

语法:字符串 regexp 正则表达式
返回值:boolean
说明:若字符串符合正则表达式,则返回true,否则返回false。
说明:正则匹配成功,输出true

select 'dfsaaaa' regexp 'dfsa+'

在这里插入图片描述
说明:正则匹配失败,输出false

select 'dfsaaaa' regexp 'dfsb+';

在这里插入图片描述

(5)repeat:重复字符串

语法:repeat(string A, int n)
返回值:string
说明:将字符串A重复n遍。

select repeat('123', 3);

在这里插入图片描述

(6)split :字符串切割

语法:split(string str, string pat)
返回值:array
说明:按照正则表达式pat匹配到的内容分割str,分割后的字符串,以数组的形式返回。
在这里插入图片描述

(7)nvl :替换null值

语法:nvl(A,B)
说明:若A的值不为null,则返回A,否则返回B。

select nvl(null,1); 

在这里插入图片描述

(8)concat :拼接字符串

语法:concat(string A, string B, string C, ……)
返回:string
说明:将A,B,C……等字符拼接为一个字符串

select concat('beijing','-','shanghai','-','shenzhen');

在这里插入图片描述

(9)concat_ws:以指定分隔符拼接字符串或者字符串数组

语法:concat_ws(string A, string…| array(string))
返回值:string
说明:使用分隔符A拼接多个字符串,或者一个数组的所有元素。
在这里插入图片描述
在这里插入图片描述

(10)get_json_object:解析json字符串

语法:get_json_object(string json_string, string path)
返回值:string
说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。

获取json数组里面的json具体数据

select get_json_object('[{"name":"大海海","sex":"男","age":"25"},{"name":"小宋宋","sex":"男","age":"47"}]','$.[0].name');

在这里插入图片描述
获取json数组里面的数据

select get_json_object('[{"name":"大海海","sex":"男","age":"25"},{"name":"小宋宋","sex":"男","age":"47"}]','$.[0]');

在这里插入图片描述

5 日期函数

(1)unix_timestamp:返回当前或指定时间的时间戳

语法:unix_timestamp()
返回值:bigint
说明:-前面是日期后面是指,日期传进来的具体格式

select unix_timestamp('2022/08/08 08-08-08','yyyy/MM/dd HH-mm-ss');

在这里插入图片描述

(2)from_unixtime:转化UNIX时间戳(从 1970-01-01 00:00:00 UTC 到指定时间的秒数)到当前时区的时间格式

语法:from_unixtime(bigint unixtime[, string format])
返回值:string

select from_unixtime(1659946088);

在这里插入图片描述

(3)current_date:当前日期

select current_date;

在这里插入图片描述

(4)current_timestamp:当前的日期加时间,并且精确的毫秒

select current_timestamp;

在这里插入图片描述

(5)month:获取日期中的月

语法:month (string date)
返回值:int

 select month('2022-08-08 08:08:08');

在这里插入图片描述

(6)day:获取日期中的日

语法:day (string date)
返回值:int

select day('2022-08-08 08:08:08')    

在这里插入图片描述

(7)hour:获取日期中的小时

语法:hour (string date)
返回值:int

 select hour('2022-08-08 08:08:08');   

在这里插入图片描述

(8)datediff:两个日期相差的天数(结束日期减去开始日期的天数)

语法:datediff(string enddate, string startdate)
返回值:int

 select datediff('2021-08-08','2022-10-09');    

在这里插入图片描述

(9)date_add:日期加天数

语法:date_add(string startdate, int days)
返回值:string
说明:返回开始日期 startdate 增加 days 天后的日期

 select date_add('2022-08-08',2);   

在这里插入图片描述

(10)date_sub:日期减天数

语法:date_sub (string startdate, int days)
返回值:string
说明:返回开始日期startdate减少days天后的日期。

 select date_sub('2022-08-08',2);    

在这里插入图片描述

(11)date_format:将标准日期解析成指定格式字符串

 select date_format('2022-08-08','yyyy年-MM月-dd日')   

在这里插入图片描述

6 流程控制函数

(1)case when:条件判断函数

语法一:case when a then b [when c then d]* [else e] end
返回值:T
说明:如果a为true,则返回b;如果c为true,则返回d;否则返回 e

select case when 1=2 then 'tom' when 2=2 then 'mary' else 'tim' end from location; 

在这里插入图片描述
语法二: case a when b then c [when d then e]* [else f] end
返回值: T
说明:如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回f

select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end from location; 

在这里插入图片描述

(2)if: 条件判断,类似于Java中三元运算符

语法:if(boolean testCondition, T valueTrue, T valueFalseOrNull)
返回值:T
说明:当条件testCondition为true时,返回valueTrue;否则返回valueFalseOrNull
条件满足,输出正确

select if(10 > 5,'正确','错误'); 

在这里插入图片描述
条件满足,输出错误

 select if(10 < 5,'正确','错误');

在这里插入图片描述

7 集合函数

(1)size:集合中元素的个数

 select size(array('beijing','shenzhen','shanghai')) from location;

在这里插入图片描述

(2)map:创建map集合

语法:map (key1, value1, key2, value2, …)
说明:根据输入的key和value对构建map类型

 select map('xiaohai',1,'dahai',2);  

在这里插入图片描述

(3)map_keys: 返回map中的key

select map_keys(map('xiaohai',1,'dahai',2));

在这里插入图片描述

(4)map_values: 返回map中的value

select map_values(map('xiaohai',1,'dahai',2));

在这里插入图片描述

(5)array 声明array集合

语法:array(val1, val2, …)
说明:根据输入的参数构建数组array类

 select array('1','2','3','4');

在这里插入图片描述

(6)array_contains: 判断array中是否包含某个元素

 select array_contains(array('a','b','c','d'),'a');

在这里插入图片描述

(7)sort_array:将array中的元素排序

select sort_array(array('a','d','c'));

在这里插入图片描述

(8)struct声明struct中的各属性

语法:struct(val1, val2, val3, …)
说明:根据输入的参数构建结构体struct类

select struct('name','age','weight');

在这里插入图片描述

(9)named_struct声明struct的属性和值

select named_struct('name','xiaosong','age',18,'weight',80);

在这里插入图片描述

8 高级聚合函数

(1)collect_list 收集并形成list集合,结果不去重

在这里插入图片描述

select sex,collect_list(job)
fromemployee
group by sex

在这里插入图片描述

(2) collect_set 收集并形成set集合,结果去重

select sex,collect_set(job)
fromemployee
group by sex

在这里插入图片描述

9 常用窗口函数

参考以下文章:

开窗函数的使用详解(聚合函数图文详解)

原文链接:https://blog.csdn.net/m0_52606060/article/details/129150481

开窗函数的使用详解(窗口范围ROWS与RANGE图文详解)

原文链接:https://blog.csdn.net/m0_52606060/article/details/129132985

10 自定义函数

参考以下文章:

hive自定义函数及案例

原文链接:https://blog.csdn.net/m0_52606060/article/details/134826464

相关文章:

hive常用SQL函数及案例

1 函数简介 Hive会将常用的逻辑封装成函数给用户进行使用&#xff0c;类似于Java中的函数。 好处&#xff1a;避免用户反复写逻辑&#xff0c;可以直接拿来使用。 重点&#xff1a;用户需要知道函数叫什么&#xff0c;能做什么。 Hive提供了大量的内置函数&#xff0c;按照其特…...

分页操作中使用LIMIT和OFFSET后出现慢查询的原因分析

事情经过 最近在做批量数据处理的相关业务&#xff0c;在和下游对接时&#xff0c;发现拉取他们的业务数据刚开始很快&#xff0c;后面会越来越慢&#xff0c;40万数据一个小时都拉不完。经过排查后&#xff0c;发现对方用了很坑的分页查询方式 —— LIMIT OFFSET&#xff0c;…...

Java八股文面试全套真题【含答案】- Redis篇

请看下面列举的50个关于Redis的经典面试问题和简短答案&#xff1a; Redis是什么&#xff1f;简要介绍一下Redis的特点。 Redis是一个开源的高性能键值存储数据库&#xff0c;支持多种数据结构&#xff0c;如字符串、列表、集合、哈希和有序集合等。 特点包括快速、可持久化、支…...

【C++11特性篇】一文助小白轻松理解 C++中的【左值&左值引用】【右值&右值引用】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.【左值&#xff06;左值引用】&…...

动态规划——OJ题(一)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、第N个泰波那契数1、题目讲解2、思路讲解3、代码实现 二、三步问题1、题目讲解2、思路讲解…...

六:爬虫-数据解析之BeautifulSoup4

六&#xff1a;bs4简介 基本概念&#xff1a; 简单来说&#xff0c;Beautiful Soup是python的一个库&#xff0c;最主要的功能是从网页抓取数据官方解释如下&#xff1a; Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。 它是一个工具箱…...

音频筑基:总谐波失真THD+N指标

音频筑基&#xff1a;总谐波失真THDN指标 THDN含义深入理解 在分析音频信号中&#xff0c;THDN指标是我们经常遇到的概念&#xff0c;这里谈谈自己的理解。 THDN含义 首先&#xff0c;理解THD的定义&#xff1a; THD&#xff0c;Total Harmonic Distortion&#xff0c;总谐波…...

自动驾驶技术:驶向未来的智能之路

导言 自动驾驶技术正引领着汽车产业向着更安全、高效、智能的未来演进。本文将深入研究自动驾驶技术的核心原理、关键技术、应用场景以及对交通、社会的深远影响。 1. 简介 自动驾驶技术是基于先进传感器、计算机视觉、机器学习等技术的创新&#xff0c;旨在实现汽车在不需要人…...

TIGRE: a MATLAB-GPU toolbox for CBCT image reconstruction

TIGRE: 用于CBCT图像重建的MATLAB-GPU工具箱 论文链接&#xff1a;https://iopscience.iop.org/article/10.1088/2057-1976/2/5/055010 项目链接&#xff1a;https://github.com/CERN/TIGRE Abstract 本文介绍了基于层析迭代GPU的重建(TIGRE)工具箱&#xff0c;这是一个用于…...

我的NPI项目之Android 安全系列 -- EMVCo

最近一直在和支付有关的内容纠缠&#xff0c;原来我负责的产品后面还要过EMVCo的认证。于是&#xff0c;就网上到处找找啥事EMVCo&#xff0c;啥是EMVCo&#xff0c;啥是EMVCo。 于是找到了一个神奇的个人网站&#xff1a;Ganeshji Marwaha 虽然时间有点久远&#xff0c;但是用…...

vue中实现使用相框点击拍照,canvas进行前端图片合并下载

拍照和相框合成,下载图片dome 一、canvas介绍 Canvas是一个HTML5元素,它提供了一个用于在网页上绘制图形、图像和动画的2D渲染上下文。Canvas可以用于创建各种图形,如线条、矩形、圆形、文本等,并且可以通过JavaScript进行编程操作。 Canvas元素本身是一个矩形框,可以通…...

边缘检测@获取labelme标注的json黑白图掩码mask

import cv2 as cv import numpy as np import json import os from PIL import Imagedef convertPolygonToMask(jsonfilePath):...

嵌入式培训-数据结构-day23-线性表

线性表 线性表是包含若干数据元素的一个线性序列 记为&#xff1a; L(a0, ...... ai-1, ai, ai1 ...... an-1) L为表名&#xff0c;ai (0≤i≤n-1)为数据元素&#xff1b; n为表长,n>0 时&#xff0c;线性表L为非空表&#xff0c;否则为空表。 线性表L可用二元组形式描述…...

C# DotNetCore AOP简单实现

背景 实际开发中业务和日志尽量不要相互干扰嵌套&#xff0c;否则很难维护和调试。 示例 using System.Reflection;namespace CSharpLearn {internal class Program{static void Main(){int age 25;string name "bingling";Person person new(age, name);Conso…...

19.Tomcat搭建

Tomcat 简介 Tomcat的安装和启动 前置条件 • JDK 已安装(JAVA_HOME环境变量已被成功配置) Windows 下安装 访问 http://tomcat.apache.org ⇒ 左侧边栏 “Download” 2. 解压缩下载的文件到 “D:\tomcat”, tomcat的内容最终被解压到 “D:\tomcat\apache-tomcat-9.0.84” 3.…...

HarmonyOS云开发基础认证考试满分答案(100分)【全网最全-不断更新】【鸿蒙专栏-29】

系列文章&#xff1a; HarmonyOS应用开发者基础认证满分答案&#xff08;100分&#xff09; HarmonyOS应用开发者基础认证【闯关习题 满分答案】 HarmonyOS应用开发者高级认证满分答案&#xff08;100分&#xff09; HarmonyOS云开发基础认证满分答案&#xff08;100分&#xf…...

Unity项目里Log系统该怎么设计

其实并没有想完整就设计一个好用的Log系统&#xff0c;然后发出来。记录这个的原因&#xff0c;是在书里看到这么一句话&#xff0c;Log会消耗资源&#xff0c;特别是写文件&#xff0c;因此可以设置一个Log缓冲区&#xff0c;等缓冲区满了再一次性写入文件&#xff0c;以节省资…...

设计模式-状态(State)模式

目录 开发过程中的一些场景 状态模式的简单介绍 状态模式UML类图 类图讲解 适用场景 Java中的例子 案例讲解 什么是状态机 如何实现状态机 SpringBoot状态自动机 优点 缺点 与其他模式的区别 小结 开发过程中的一些场景 我们在平时的开发过程中&#xff0c;经常会…...

oracle怎么存放json好

Oracle数据库提供了多种方式来存储JSON数据。你可以将JSON数据存储在VARCHAR2、CLOB或BLOB数据类型中&#xff0c;或者使用Oracle提供的JSON数据类型。 如果你选择使用VARCHAR2数据类型来存储JSON数据&#xff0c;你可以直接将JSON字符串存储在其中。例如&#xff1a; CREATE…...

【计算机网络】—— 详解码元,传输速率的计算|网络奇缘系列|计算机网络

&#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏: 一见倾心,再见倾城 --- 计算机网络~&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 码元 速率和波特 思考1 思考2 思考3 带宽&#xff08;Bandwidth&#xff09; &#x1f4dd;总结 码元…...

[ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证

文章目录 一、前言二、在 Azure Portal 中创建 VM三、验证已创建的虚拟机资源3.1 方法一&#xff1a;在虚拟机服务中查看验证3.1 方法二&#xff1a;在资源组服务中查看验证 四、文末总结 一、前言 本文会开始创建新系列的专栏&#xff0c;专门更新 Azure 云实践相关的文章。 …...

计算机网络:网络层(无分类编址CIDR、计算题讲解)

带你快速通关期末 文章目录 前言一、无分类编址CIDR简介二、构成超网三、最长前缀匹配总结 前言 我们在前面知道了分类地址&#xff0c;但是分类地址又有很多缺陷&#xff1a; B类地址很快将分配完毕!路由表中的项目急剧增长! 一、无分类编址CIDR简介 无分类域间路由选择CI…...

Learning Semantic-Aware Knowledge Guidance forLow-Light Image Enhancement

微光图像增强&#xff08;LLIE&#xff09;研究如何提高照明并生成正常光图像。现有的大多数方法都是通过全局和统一的方式来改善低光图像&#xff0c;而不考虑不同区域的语义信息。如果没有语义先验&#xff0c;网络可能很容易偏离区域的原始颜色。为了解决这个问题&#xff0…...

关于嵌入式开发的一些信息汇总:开发模型以及自托管开发(二)

关于嵌入式开发的一些信息汇总&#xff1a;开发模型及自托管开发&#xff08;二&#xff09; 2 自托管开发2.2 构建 Raspberry Pi 内核2.3 安装内核2.4 总结 3 连接目标板3.1 Raspberry Pi 上的网络设置3.2 Ssh、rsh、rlogin 和 telnet 连接到目标 4 应用程序开发4.1 在目标板上…...

【JavaEE】多线程案例 - 定时器

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…...

网络小测------

使用软件PT7.0按照上面的拓扑结构建立网络&#xff0c;进行合理配置&#xff0c;使得所有计算机之间能够互相通信。并且修改各交换机的系统名称为&#xff1a;学号_编号&#xff0c;如你的学号为123&#xff0c;交换机Switch0的编号为0&#xff0c;则系统名称为123_0&#xff1…...

基于linux系统的Tomcat+Mysql+Jdk环境搭建(二)jdk1.8 linux 上传到MobaXterm 工具的已有session里

【JDK安装】 1.首先下载一个JDK版本 官网地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载1.8版本&#xff0c;用红框标注出来了&#xff1a; 也许有的同学看到没有1.8版本&#xff0c;你可以随便下载一个linux的…...

04-Nacos中负载均衡规则的配置

负载均衡规则 同集群优先 默认的ZoneAvoidanceRule实现并不能根据同集群优先的规则来实现负载均衡,Nacos中提供了一个实现叫NacosRule可以优先从同集群中挑选服务实例 当服务消费者在本地集群找不到服务提供者时也会去其他集群中寻找,但此时会在服务消费者的控制台报警告 第…...

Kotlin 中的 `use` 关键字:优化资源管理(避免忘记inputStream.close() ?)

在 Android开发中&#xff0c;正确且高效地管理资源是至关重要的。use 关键字在 Kotlin 中为资源管理提供了一个简洁且强大的解决方案。它主要用于自动管理那些需要关闭的资源&#xff0c;比如文件、网络连接等。 一、use 关键字的工作原理 &#x1f916; use 是一个扩展函数…...

时序预测 | Python实现GRU-XGBoost组合模型电力需求预测

时序预测 | Python实现GRU-XGBoost组合模型电力需求预测 目录 时序预测 | Python实现GRU-XGBoost组合模型电力需求预测预测效果基本描述程序设计参考资料预测效果 基本描述 该数据集因其每小时的用电量数据以及 TSO 对消耗和定价的相应预测而值得注意,从而可以将预期预测与当前…...

做繁体书的网站/优化服务是什么意思

第一步&#xff0c;你需要一张英文底图。 设置map的属性&#xff0c;lang为‘en即可。 类参考&#xff1a; 地图展示代码&#xff1a; var map new AMap.Map(mapContainer, {center: [121.498586, 31.239637], //地图中心点坐标lang: en, //英文底图zoom:16 //地图级别&#x…...

中国做的比较好的网站/seo站长博客

Semaphore简介Semaphore是并发包中提供的用于控制某资源同时被访问的个数操作系统的信号量是个很重要的概念&#xff0c;在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制&#xff0c;Semaphore可以控制某个资源可被同时访问的个数&#xff0c;通过 …...

怎么创建音乐网站/推广关键词怎么设置

最短路径分析属于ArcGIS的网络分析范畴。而ArcGIS的网络分析分为两类&#xff0c;分别是基于几何网络和网络数据集的网络分析。它们都可以实现最短路径功能。下面先介绍基于几何网络的最短路径分析的实现。以后会陆续介绍基于网络数据集的最短路径分析以及这两种方法的区别。 几…...

织梦中英网站怎么做/宁波网站推广公司价格

JMeter和Gatling均用于具有相同目的的不同方法的测试。该界面对于JMeter用户而言技术性较低&#xff0c;并且具有良好的培训生态系统。它具有多个协议和插件&#xff0c;并且用户对该工具做出了许多贡献。加特林主要用于CI / CD管道&#xff0c;并在没有用户界面的情况下创建适…...

怎么在百度上搜到自己的网站/网站搜什么关键词

gettext 是GNU 提供的一套 国际化与本地化处理的相关函数库。大多数语言都有对应的gettext实现。本文主要使用jed 来实现gettext 一系列方法对应的功能。pot/po文件pot文件 是po文件的模板文件&#xff0c;一般是通过 xgettext 程序生成出来的。po文件 是根据pot文件通过msgini…...

番禺俊才网/seo自学教程推荐

【问题描述】 已知cosx的近似计算公式如下&#xff1a; cosx 1 - x2/2! x4/4! - x6/6! … (-1)nx2n/(2n)! 其中x为弧度&#xff0c;n为大于等于0的整数。编写程序根据用户输入的x和n的值&#xff0c;利用上述近似计算公式计算cosx的近似值&#xff0c;要求输出结果小数点…...