首页 > 数据库 >Hive sql 4:中位数

Hive sql 4:中位数

时间:2024-09-19 19:19:44浏览次数:3  
标签:over 中位数 Hive asc num sql rn desc

先说下中位数的概念:

中位数‌是统计学中的一个重要概念,它代表将一组数据按照大小排序后位于中间位置的数值。如果一组数据有奇数个数值,则中位数是中间那个数;如果数据中有偶数个数值,则中位数是中间两个数的平均值。中位数是一种位置平均数,它是按顺序排列的一组数据中居于中间位置的数,能够将数值集合划分为相等的上下两部分。中位数不受数据中极端值的影响,具有较强的代表性,通常用于描述一组数据的中心趋势‌

数据demo如下:

nonum
11
27
39
415
520
621

总共有3种解法 

1)解法1

如果是奇数的话,就是(n+1)/2

如果是偶数的话,就是n/2, n/2+1

select avg(num) as median
       
from 
(
select num
     ,row_number() over(order by num asc) as rn
     ,count(1) over() as cnt
from tbl
) where rn in ( (cnt+1)/2, cnt/2,cnt/2+1)

2) 解法2

nonumrn_ascrn_desc
1116
2725
3934
41543
52052
62161

正序排列和倒序排列,

偶数的话就是,rn_asc-rn_desc  in (1,-1)

奇数的话就是,rn_asc-rn_desc  in (0)

select avg(num) as median
       
from 
(
select num
     ,row_number() over(order by num asc) as rn_asc
     ,row_number() over(order by num desc) as rn_desc
from tbl
) where rn_asc -rn_desc  in ( 1,-1,0)

3) 解法3 

 偶数时,升序数>=总数/2,降序数>=总数/2

奇数时,升序数>=总数/2,降序数>=总数/2 这两个值相等

select avg(num) as median
       
from 
(
select num
     ,row_number() over(order by num asc) as rn_asc
     ,row_number() over(order by num desc) as rn_desc
     ,count(1) over() as cnt
from tbl
) where rn_asc >=cnt/2
and rn_desc>=2

标签:over,中位数,Hive,asc,num,sql,rn,desc
From: https://blog.csdn.net/2402_86289011/article/details/142306273

相关文章

  • Hive sql 6:行转列及列转行
    1) 多行转单列user_idlogin_date10012024-09-0110012024-09-0210022024-09-0310032024-09-05比较常见的selectuser_id,concat_ws(',',collect_list(login_date))login_date_setfromtblgroupbyuser_id延伸下,集合中保证日期的有序启动多个mr,顺序会有问题1) 以前......
  • Sql 数据存在就返回匹配数据 不存在就新增数据
    本次样例的执行内容是,匹配就返回匹配数据的id,不匹配就新增数据方式一DECLARE@userIdINTifnotEXISTS(select1fromdbo.UserwherePId=4ANDCode='XX')BEGININSERTINTOdbo.User(PId,Code)VALUES(4,'XX');SELECT@userId=IDENT_CURRENT('User');END......
  • 基于SpringBoot+Vue+MySQL的智能物流管理系统
    系统展示系统背景  随着信息技术的飞速发展和电子商务的蓬勃兴起,智能物流管理系统的需求日益迫切。传统的物流管理方式已难以满足高效、精准、实时的管理需求。因此,基于SpringBoot、Vue和MySQL的智能物流管理系统应运而生。该系统旨在通过现代化的技术手段,实现物......
  • 2024Mysql And Redis基础与进阶操作系列(6)作者——LJS[含MySQL 多表之一对一/多;多对多;
    MySQL多表操作1多表关系简介1.1一对一关系比如1.2一对多/多对一关系比如:实现规则:1.3多对多关系举例:规则:2.多表联合查询简介多表查询有以下分类知识补充——笛卡尔积(了解即可)交叉连接查询[产生笛卡尔积]内连接查询(使用的关键字innerjoin--inner可以省......
  • 支持 128TB 超大存储,GaussDB (for MySQL) 如何轻松应对海量数据挑战
    本文分享自华为云社区《【选择GaussDB(forMySQL)的十大理由】之二:128TB超大存储》,作者:GaussDB数据库。大数据时代的挑战随着互联网、大数据等行业的迅猛发展,企业的数据流量呈现爆炸式增长,数据库作为数据存储的核心,其承载的数据量越来越大。近十年,企业数据量从GB发展到TB,甚......
  • mysql 将A库的表名和表字段注释,迁移到另外一个库中,生成alter 语句
    表备注--获取用于添加表备注的SQL语句SELECTCONCAT('ALTERTABLE目标数据库名.',TABLE_NAME,'COMMENT=\'',TABLE_COMMENT,'\';')ASalter_table_comment_sqlFROMINFORMATION_SCHEMA.TABLESWHERETABLE_SCHEMA='......
  • MySQL零基础入门教程-1 mysql安装卸载、启动关闭、常用命令、sql语句分类(非常详细),基础
    教程来源:B站视频BV1Vy4y1z7EX001-数据库概述_哔哩哔哩_bilibili我自己听讲收集整理的课程的完整笔记,供大家学习交流吧:夸克网盘分享本文内容为完整笔记的第一篇一、数据库概述1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?P1、P2数据库英文单词DataBase,简称DB,......
  • 支持128TB超大存储,GaussDB(for MySQL)如何轻松应对海量数据挑战
    摘要:华为云数据库GaussDB(forMySQL)基于华为最新一代DFV存储,采用计算存储分离架构,最多支持128TB的海量存储。本文分享自华为云社区《【选择GaussDB(forMySQL)的十大理由】之二:128TB超大存储》,作者:GaussDB数据库。大数据时代的挑战随着互联网、大数据等行业的迅猛发展,企业的数据......
  • 2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单
    目录1MySQL数据库基本操作-DQL-基本查询1.2SQL概述1.3SQL类2.SQL语言的规则与规范2.1基本规则2.2SQL大小写规范推荐采用统一的书写规范:2.3注释2.4命名规则(了解即可)举例:两句是一样的,不区分大小写创建表格order使用``飘号,因为order和系统关键字或系统函数名......
  • 从源码角度,深度解读 MySQL 优化器的 GROUP BY 优化策略
    本文分享自华为云社区《【华为云MySQL技术专栏】MySQL优化器中GROUPBY优化策略介绍》,作者:GaussDB数据库。1.背景介绍在MySQL中,GROUPBY功能至关重要,它允许用户依据一个或多个列的值对结果集进行分组,通常与聚合函数(如COUNT,SUM,AVG等)结合使用。在日常查询中,包含GROUP......