HiveSQL分位数函数percentile()使用详解+实例代码

简介: HiveSQL分位数函数percentile()使用详解+实例代码

前言


作为数据分析师每个SQL数据库的函数以及使用技能操作都得点满,尤其是关于统计函数的使用方法。关于统计出数据的中位数,众数和分位数的方法必须掌握几种,一般在实际业务上大部分都是以写SQL查询为主,因为如果想用Python的Pandas去做数据分析还得将数据导出来读出来,输出了结果还得再倒进去,十分的麻烦。若是能在SQL上面直接处理简单问题,那么效率要远高于导出做Pandas处理。本篇文章主要介绍percentile分位数函数使用方法,后几篇文章将主要详解每个SQL中统计函数的使用方法,感兴趣觉得帮助大的朋友可以关注。本篇博客博主将长期维护,若有错误请在评论区指出。


HiveSQL中关于分位数的计算主要是通过percentile()percentile_approx()这两个函数来实现。


一、percentile()


函数使用语法:


percentile(col, p)

参数说明:


col:指定需要计算的列名,并且列的值必须为int类型。

p:指定得到的分位数数值,取值范围为[0,1],若为0.5则为中位数,若为0.75则为四分之三分位数,依此类推。

示例使用:

SELECT percentile(num,0.2) as two_parts#取二分位数
FROM dbbasename.table

c6910c3f4d344a019353669ced5640f1.png

另外还可以已数列的方式输入p,则也回返回一个数列,包含其输入数列对应的百分位数:


1. SELECT percentile(num,array(0.2,0.4,0.6)) as parts#取二分位数
2. FROM dbbasename.table


85a844654e7540fea35cc9d1d3910db3.png

二、percentile_approx()


函数使用语法:


percentile_approx(DOUBLE col,p,B)


求近似的第p个百分位数,p必须介于0和1之间,返回类型为double,但是col字段支持浮点类型。参数B控制内存消耗的近似精度,B越大,结果的精度越高。默认值为10000。当col字段中的distinct值的个数小于B时,结果就为准确的百分位数。

SELECT percentile_approx(num,0.2,9999) as two_parts#取二分位数
FROM dbbasename.table

baaf4e7270934265bc4f42f1f06ac58d.png


当然一样也能输出数列:


1. SELECT percentile_approx(num,array(0.25,0.5,0.75)) as parts#取二分位数
2. FROM dbbasename.table


cfd5a4f9c12846f2ba33b34ff995ceb0.png

目录
相关文章
|
6月前
|
Java
【java作业3——类的定义】复数,连续子数组,最大素数
🍒 1 定义复数类 作业内容: 定义一个复数类Complex(数据成员:a,b表示复数a+bi).并配以合适的方法完成复数对象的生成、复数的运算(加、减、乘除),然后做一个主类测试它。
50 0
|
6月前
|
存储 编译器 C语言
顺序程序设计举例
顺序程序设计举例
52 1
|
3月前
|
人工智能 Java 容器
十个Java字符串操作示例程序
十个Java字符串操作示例程序
26 1
#PY小贴士# for 循环定义的变量,循环外可以用吗?
我们知道,在 python 中要获取一个变量的值,必须是先给它赋值过,不然就是未定义。那么这个 i,代码中没有显式的赋值,在循环体之外还可以用吗?
|
存储 C语言
内存系列函数+字符分类函数+字符转换函数(保姆级教程)
C语言学习第二十一弹——教你学会内存系列函数和字符分类转换函数简化部分例题
编写代码实现:单词计数。对文档中的单词计数(注意:不包括符号),并把单词计数超过3的结果进行保存。
编写代码实现:单词计数。对文档中的单词计数(注意:不包括符号),并把单词计数超过3的结果进行保存。
|
关系型数据库 MySQL 数据库
MySQL基础-数值函数(上)
常见的数值函数如下:
123 0
LanguageTool最简范例代码
LanguageTool最简范例代码
122 0
|
索引
jmu-枚举WeekDay(补全代码) (5 分)
jmu-枚举WeekDay(补全代码) (5 分)
112 0
|
C语言 Python
7-24 约分最简分式 (15 分)
7-24 约分最简分式 (15 分)
196 0