HiveSql中的函数家族(二)

一、窗口函数

1、什么是窗口函数

        在 SQL 中,窗口函数(Window Functions)是一种特殊的函数,它允许在查询结果集的特定窗口(通常是一组行)上执行聚合、分析和计算操作,而无需聚合整个结果集。窗口函数可以用来解决许多复杂的数据分析问题,例如计算排名、累积总数、移动平均值等。窗口函数通常与 OVER 子句一起使用,该子句用于定义窗口的大小和位置。

窗口函数的一般语法结构如下:

<窗口函数>([参数]) OVER ([PARTITION BY 列1, 列2, ...][ORDER BY 列3 [ASC|DESC]][ROWS | RANGE 关键字][窗口范围或行数定义]
)
  • <窗口函数> 是要执行的窗口函数,例如 SUM、AVG、ROW_NUMBER 等。
  • PARTITION BY 子句可选,用于对结果集进行分区,将数据划分为不同的分组。
  • ORDER BY 子句可选,用于对每个分区内的行进行排序。
  • ROWSRANGE 关键字指定窗口的类型,ROWS 表示窗口以行数为单位,RANGE 表示窗口以值范围为单位。
  • 窗口范围或行数定义用于指定窗口的大小和位置,例如 ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING 表示窗口包括当前行及其前面的三行和后面的一行。

2、常用的窗口函数

  1. ROW_NUMBER():为结果集中的每一行分配一个唯一的数字序号。

    语法格式:

    ROW_NUMBER() OVER (ORDER BY 列1 [ASC|DESC])
  2. RANK():为结果集中的每一行分配一个排名,如果有相同的值,则会跳过相同的排名。

    语法格式:

    RANK() OVER (ORDER BY 列1 [ASC|DESC])
  3. DENSE_RANK():为结果集中的每一行分配一个密集排名,如果有相同的值,则仍然连续分配排名。

    语法格式:

    DENSE_RANK() OVER (ORDER BY 列1 [ASC|DESC])
  4. SUM():计算指定列的总和,可以在窗口内计算。

    语法格式:

    SUM(列1) OVER (PARTITION BY 列2 ORDER BY 列3 [ASC|DESC])
  5. AVG():计算指定列的平均值,可以在窗口内计算。

    语法格式:

    AVG(列1) OVER (PARTITION BY 列2 ORDER BY 列3 [ASC|DESC])
  6. LEAD():获取结果集中当前行后面的指定行数的值。

    语法格式:

    LEAD(列1, offset, default_value) OVER (ORDER BY 列2 [ASC|DESC])
  7. LAG():获取结果集中当前行前面的指定行数的值。

    语法格式:

    LAG(列1, offset, default_value) OVER (ORDER BY 列2 [ASC|DESC])

  8. FIRST_VALUE():获取结果集中指定列的第一个值。

    语法格式:

    FIRST_VALUE(列1) OVER (ORDER BY 列2 [ASC|DESC])
  9. LAST_VALUE():获取结果集中指定列的最后一个值。

    语法格式:

    LAST_VALUE(列1) OVER (ORDER BY 列2 [ASC|DESC] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
  10. COUNT():计算指定列的行数,可以在窗口内计算。

    语法格式:

    COUNT(列1) OVER (PARTITION BY 列2 ORDER BY 列3 [ASC|DESC])
  11. MAX():获取指定列的最大值,可以在窗口内计算。

    语法格式:

    MAX(列1) OVER (PARTITION BY 列2 ORDER BY 列3 [ASC|DESC])
  12. MIN():获取指定列的最小值,可以在窗口内计算。

    语法格式:

    Min(列1) OVER (PARTITION BY 列2 ORDER BY 列3 [ASC|DESC])
  13. NTILE():将结果集分成指定数量的桶,并为每个桶分配一个编号。

    语法格式:

    NTILE(number_of_buckets) OVER (ORDER BY 列1 [ASC|DESC])
  14. PERCENT_RANK():计算结果集中每行的百分比排名。

    语法格式:

    PERCENT_RANK() OVER (ORDER BY 列1 [ASC|DESC])
  15. CUME_DIST():计算结果集中每行的累积分布值。

    语法格式:

    CUME_DIST() OVER (ORDER BY 列1 [ASC|DESC])
  16. ROW_NUMBER():为结果集中的每一行分配一个唯一的数字序号。

        语法格式:        

ROW_NUMBER() OVER (ORDER BY 列1 [ASC|DESC])

二、CTE语法

CTE语法类似子查询,可以将一个select语句计算的结果当成一个新的临时表使用。

-- 子查询,将子查询的结果当做表使用
select empno,ename from (
select * from emp) t1;
-- 基本用法
with 临时表名 as(查询语句)
select * from 临时表名-- 多个计算结果保存
with tb1 as(查询语句),,tb2 as(查询语句 select * from tb1),tb3 as(查询语句).....
select * from tb3 join tb2
with tb1 as(select * from emp)
select ename,sal from tb1;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FTP客户端Transmit 5 for Mac中文激活版

Transmit 5是一款功能强大的Mac FTP客户端软件&#xff0c;它由Panic公司开发&#xff0c;为用户提供简单、高效的文件传输体验。 Transmit 5 for Mac中文激活版下载 Transmit 5支持多种传输协议&#xff0c;如FTP、SFTP、WebDAV和Amazon S3等&#xff0c;满足用户不同的文件传…

【公司UI自动化学习】

公司课程链接&#xff1a;https://l.jd.com/student/project/project.du?project_id697509403 公司的课程&#xff0c;是给一个学习方向。 一、 PC自动化 1&#xff09;什么项目适合 2&#xff09;PC自动化介入时间点 3&#xff09;自动化率&#xff1a; 频繁改动的&…

不需要GPU就可以玩转模型,同时支持本地化部署

简单一款不需要GPU就可以在Win 机器跑的模型&#xff1a;Ollama&#xff1b;用于本地运行和部署大型语言模型&#xff08;LLMs&#xff09;的开源工具 关于Ollama的简要介绍 平台兼容性&#xff1a;Ollama支持多种操作系统&#xff0c;包括macOS、Linux和Windows&#xff0c;…

华为手机无法弹出wifi上网认证页面处理

华为手机无法弹出wifi上网认证页面 连wifi后跳到上图界面卡住&#xff0c;不跳转到单位的上网认证界面。 打开手机的设置应用&#xff0c;点击上面的WLAN选项。 点击上面的更多WLAN设置选项。 关闭WLAN安全检测就可以正常弹出上网认证界面&#xff0c; 正常弹出上网认证界面&a…

C++类和对象 中(六大默认成员函数)

前言 紧接着上一篇文章&#xff0c;接下来我们来认识下类的六大默认成员函数&#xff0c;如下图。之所以叫他默认成员函数&#xff0c;是因为即使我们不写&#xff0c;编译器会默认帮我们写&#xff0c;但只要我们自己显示的写了&#xff0c;编译器就不会帮我们生成对应的成员函…

第十五届蓝桥杯复盘python大学A组——试题C 数字诗意

思路 数字可以分为 有诗意的数字可以写成 (ij)(j-i1)/2 &#xff08; i、j都是正整数 &#xff09; ij 、j-i1 的奇偶性不同&#xff08;因为i、j都是正整数&#xff09; 因此&#xff0c; 如果一个数是奇数就一定有诗意 eg.312 ,523,734,945… 原因&#xff1a;根据上述分…

114 接口中幂等性的保证

前言 同样是 面试问题 如何确保接口的 幂等性 幂等是一个 较为抽象的概念, 多次重复访问, 不会导致业务逻辑的异常 这里从增删改查, 几个方面列一下 一般来说, 我们核心需要关注的就是 新增 和 更新 对于 增加元素, 首先针对唯一约束进行校验, 然后再处理新增的相关业…

Day09 React———— 第九天

ReactRoter 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候&#xff0c;path 对应的组件会在页面中进行渲染 基础用法 import { createBrowserRouter, RouterProvider } from "react-router-dom"; const router createBrowserRoute…

AI讲师人工智能讲师大模型培训讲师叶梓:突破大型语言模型推理效率的创新方法

大型语言模型&#xff08;LLM&#xff09;在自然语言处理&#xff08;NLP&#xff09;任务中展现出了前所未有的能力&#xff0c;但它们对计算资源的巨大需求限制了其在资源受限环境中的应用。SparQ Attention算法提出了一种创新的方法&#xff0c;通过减少注意力机制中的内存带…

探索Java世界中的七大排序算法(上)

文章目录 排序的概念直接插入排序希尔排序( 缩小增量排序)选择排序堆排序冒泡排序 在计算机科学中&#xff0c;排序算法是一类重要的算法&#xff0c;它们用于将一组元素按照一定的顺序进行排列。在Java编程中&#xff0c;我们经常需要对数组或集合进行排序操作。本文将介绍Jav…

驱动云创建保存自己的环境

驱动云创建保存自己的环境 制作镜像方法一方法二报错 上一篇link介绍了如何在驱动云上部署llama2以及驱动云在训练大模型的方便之处。也说到了可以直接使用驱动云现有的环境&#xff0c;免得自己配置环境。 但是有的时候免不了自己想要安装一些包。 驱动云的环境是这样的&…

电视音频中应用的音频放大器

电视机声音的产生原理是将电视信号转化为声音&#xff0c;然后通过扬声器将声音播放出来。当我们打开电视并选择频道时&#xff0c;电视机首先从天线或有线电视信号中获取声音信号。声音信号经过放大器放大之后&#xff0c;就能够通过扬声器发出声音。电视机声音的产生原理和音…

react中子父组件互相传值

在react中父子组件互相传值&#xff0c;除了使用类似于redux这样状态管理的工具&#xff0c;怎么实现&#xff1f;&#xff1f; 父传子(简单)父:子: 子传父(较麻烦)父&#xff1a;子&#xff1a; 父传子(简单) 父: 子: 子传父(较麻烦) 父&#xff1a; 子&#xff1a;

elementui中文官网

Element - The worlds most popular Vue UI frameworkElement&#xff0c;一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.eleme.cn/#/zh-CN/

一个 .net 8 + Azure 登录 + Ant Design Blazor 的基本后台框架

一个 .net 8 Azure 登录 Ant Design Blazor 的基本后台框架 主界面使用了 Ant Design Blazor 项目模板搭建 后台技术是 .net 8 Blazor run at server 模式 登录方式使用 Azure 实现了菜单导航和路由 此外实现了读取和修改本地Json文件的功能&#xff0c;不是必须的&#x…

[MySQL数据库] 索引与事务

1. 索引 1.1 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针.可以对表中的一列或多列创建索引,并指定索引的类型&#xff0c;各类索引有各自的数据结构实现. 1.2 作用 数据库中的表、数据、索引之间的关系&#xff0c;类似于书架上的图书、书籍…

【力扣】148. 排序链表

148. 排序链表 题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,…

深度学习架构(CNN、RNN、GAN、Transformers、编码器-解码器架构)的友好介绍。

一、说明 本博客旨在对涉及卷积神经网络 &#xff08;CNN&#xff09;、递归神经网络 &#xff08;RNN&#xff09;、生成对抗网络 &#xff08;GAN&#xff09;、转换器和编码器-解码器架构的深度学习架构进行友好介绍。让我们开始吧&#xff01;&#xff01; 二、卷积神经网络…

【观察】容器化部署“再简化”,云原生体验“再升级”

自2013年云原生概念被提出以来&#xff0c;云原生技术和架构在过去十多年得到了迅速的发展&#xff0c;并对数字基础设施、应用架构和应用构建模式带来了深刻的变革。根据IDC预测&#xff0c;到2024年&#xff0c;新增的生产级云原生应用在新应用的占比将从2020年的10%增加到60…

Java学习-详述main方法、可变参数、数组的工具类、二维数组

详述main方法 【1】main方法&#xff1a;程序的入口&#xff0c;在同一个类中&#xff0c;如果有多个方法&#xff0c;那么虚拟机就会识别main方法&#xff0c;从这个方法作为程序的入口 【2】main方法格式严格要求&#xff1a; public static void main(String[] args){} p…