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

开窗函数 - first_value/last_value


1、开窗函数是什么?

开窗函数用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用 GROUP BY 子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。

2、开窗函数有什么用?

开窗函数的功能本质是聚合,但是相比聚合,开窗函数可以提供的信息更多。

3、first_value/last_value 函数

	first_value()over(partition by 列名1,列名2 order by 列名1,列名2)是求一组数据的第一个值last_value()over(partition by 列名1,列名2 order by 列名1,列名2)是求一组数据的最后一个值

first_value 用法:

	select distinct a.date,a.name,first_value(date)over(partition by name order by date asc)as `每个人对应最早的date`,first_value(date)over(partition by name order by date desc)as `每个人对应最晚的date`from (select '张三'as name,'2021-04-11' as date union all select '李四'as name,'2021-04-09' as date union all select '赵四'as name,'2021-04-16' as date union all select '张三'as name,'2021-03-10'as dateunion all select '李四'as name,'2020-01-01'as date)a 

last_value 用法

	select distinct a.date,a.name,last_value(date)over(partition by name order by date asc)as `每个人对应最晚的date`from (select '张三'as name,'2021-04-11' as date union all select '李四'as name,'2021-04-09' as date union all select '赵四'as name,'2021-04-16' as date union all select '张三'as name,'2021-03-10'as dateunion all select '李四'as name,'2020-01-01'as date)a 


可以看到使用 last_value 函数求每个人最后一个日期,结果并不是想要的。那该怎么办呢,查询该函数的具体用法发现:

last_value() 默认的统计范围是”rows between unbounded preceding and current row【无界的前面行和当前行之间】” 怎么理解呢?见下:

	rows between unbounded preceding and current row,可以这么理解: x∈(-∞,X)rows between unbounded preceding and unbounded following,    x∈(-∞,+ ∞)rows between current row and unbounded following,            x∈(X,+ ∞) 

last_value() 默认是升序,如果限制了是降序,则等同于 first_value() 升序

	select distinct a.date,a.name,last_value(date)over(partition by name order by date rows between unbounded preceding and current row)as `(-∞,X)`,last_value(date)over(partition by name order by date rows between unbounded preceding and unbounded following)as `(-∞,+ ∞)`,last_value(date)over(partition by name order by date rows between current row and unbounded following)as `(X,+ ∞)`from (select '张三'as name,'2021-04-11' as date union all select '李四'as name,'2021-04-09' as date union all select '赵四'as name,'2021-04-16' as date union all select '张三'as name,'2021-03-10'as dateunion all select '李四'as name,'2020-01-01'as date)a 

相关文章:

开窗函数 - first_value/last_value

1、开窗函数是什么? 开窗函数用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用 GROUP BY 子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。 2、…...

「一」HarmonyOS端云一体化概要

关于作者 白晓明 宁夏图尔科技有限公司董事长兼CEO、坚果派联合创始人 华为HDE、润和软件HiHope社区专家、鸿蒙KOL、仓颉KOL 华为开发者学堂/51CTO学堂/CSDN学堂认证讲师 开放原子开源基金会2023开源贡献之星 「目录」 「一」HarmonyOS端云一体化概要 「二」体验HarmonyOS端云一…...

nodejs21: 快速构建自定义设计样式Tailwind CSS

Tailwind CSS 是一个功能强大的低级 CSS 框架,只需书写 HTML 代码,无需书写 CSS,即可快速构建美观的网站。 1. 安装 Tailwind CSS React 项目中安装 Tailwind CSS: 1.1 安装 Tailwind CSS 和相关依赖 安装 Tailwind CSS: npm…...

从JSON数据提取嵌套字段并转换为独立列的简洁方法

从JSON数据提取嵌套字段并转换为独立列的简洁方法 在数据处理和数据分析的日常工作中,我们经常遇到复杂的嵌套数据结构,特别是嵌入在JSON字段中的数据。这些数据往往需要解析并展开成独立的列,以便后续分析和建模。本文将详细介绍如何在Pyth…...

湘潭大学软件工程算法设计与分析考试复习笔记(四)

回顾 湘潭大学软件工程算法设计与分析考试复习笔记(一)湘潭大学软件工程算法设计与分析考试复习笔记(二)湘潭大学软件工程算法设计与分析考试复习笔记(三) 前言 现在是晚上十一点,我平时是十…...

特征交叉-DeepCross Network学习

一 tensorflow官方实现 tensorflow的官方实现已经是V2版本 class Cross(tf.keras.layers.Layer):"""Cross Layer in Deep & Cross Network to learn explicit feature interactions.Args:projection_dim: int,低秩矩阵的维度,应该小…...

stm32cubemx+VSCODE+GCC+makefile 开发环境搭建

title: stm32cubemxVSCODEGCCmakefile 开发环境搭建 tags: FreertosHalstm32cubeMx 文章目录 内容往期内容导航第一步准备环境vscode 插件插件配置点灯 内容 往期内容导航 第一步准备环境 STM32CubeMXVSCODEMinGWOpenOcdarm-none-eabi-gcc 然后把上面下载的软件 3 4 5 bin 文…...

Go语言中的Defer机制详解与示例

在Go语言中,defer是一个关键字,用于确保资源的清理和释放,特别是在函数中创建的资源。defer语句会将其后的函数调用推迟到包含它的函数即将返回时执行。这使得defer成为处理文件关闭、数据库连接释放、解锁等资源清理操作的理想选择。 Defer…...

H.265流媒体播放器EasyPlayer.js H5流媒体播放器如何验证视频播放是否走硬解

随着技术的不断进步和5G网络的推广,中国流媒体播放器行业市场规模以及未来发展趋势都将持续保持稳定的增长,并将在未来几年迎来新的发展机遇。流媒体播放器将继续作为连接内容创作者和观众的重要桥梁,推动数字媒体产业的创新和发展。 EasyPla…...

ms-hot目录

1. ms-hot1...

vulfocus在线靶场:骑士cms_cve_2020_35339:latest 速通手册

目录 一、启动环境,访问页面,ip:端口号/index.php?madmin,进入后台管理页面,账号密码都是adminadmin 二、进入之后,根据图片所示,地址后追加一下代码,保存修改 ​三、新开标签页访问:①ip:端…...

AI Large Language Model

AI 的 Large Language model LLM , 大语言模型: 是AI的模型,专门设计用来处理自然语言相关任务。它们通过深度学习和庞大的训练数据集,在理解和生成自然语言文本方面表现出色。常见的 LLM 包括 OpenAI 的 GPT 系列、Google 的 PaLM 和 Meta…...

React Native的`react-native-reanimated`库中的`useAnimatedStyle`钩子来创建一个动画样式

React Native的react-native-reanimated库中的useAnimatedStyle钩子来创建一个动画样式,用于一个滑动视图的每个项目(SliderItem)。useAnimatedStyle钩子允许你根据动画值(在这个例子中是scrollX)来动态地设置组件的样…...

FastJson反序列化漏洞(CVE-2017-18349)

漏洞原理 原理就不多说了&#xff0c;可以去看我这篇文章&#xff0c;已经写得很详细了。 Java安全—log4j日志&FastJson序列化&JNDI注入-CSDN博客 影响版本 FastJson<1.2.24 复现过程 这里我是用vulfocus.cn这个漏洞平台去复现的&#xff0c;比较方便&#x…...

【优选算法篇】分治乾坤,万物归一:在重组中窥见无声的秩序

文章目录 分治专题&#xff08;二&#xff09;&#xff1a;归并排序的核心思想与进阶应用前言、第二章&#xff1a;归并排序的应用与延展2.1 归并排序&#xff08;medium&#xff09;解法&#xff08;归并排序&#xff09;C 代码实现易错点提示时间复杂度和空间复杂度 2.2 数组…...

C++:探索AVL树旋转的奥秘

文章目录 前言 AVL树为什么要旋转&#xff1f;一、插入一个值的大概过程1. 插入一个值的大致过程2. 平衡因子更新原则3. 旋转处理的目的 二、左单旋1. 左单旋旋转方式总处理图2. 左单旋具体会遇到的情况3. 左单旋代码总结 三、右单旋1. 右单旋旋转方式总处理图2. 右单旋具体会遇…...

2. Django中的URL调度器 (自定义路径转换器)

在 Django 中&#xff0c;URL 路由通常使用路径转换器&#xff08;path converters&#xff09;来匹配和捕获 URL 中的特定模式&#xff0c;例如整数、字符串或 slug 等。默认情况下&#xff0c;Django 提供了一些内置的路径转换器&#xff0c;如 <int>、<str>、&l…...

深度学习:神经网络中线性层的使用

深度学习&#xff1a;神经网络中线性层的使用 在神经网络中&#xff0c;线性层&#xff08;也称为全连接层或密集层&#xff09;是基础组件之一&#xff0c;用于执行输入数据的线性变换。通过这种变换&#xff0c;线性层可以重新组合输入数据的特征&#xff0c;并将其映射到新…...

【刷题】算法设计题+程序设计题【2】2019-2024

11.202019年真题*2BST二叉排序树分裂、双向冒泡排序 2019 真题 【2019 1】编写算法&#xff0c;将一棵二叉排序树 分解成两棵二叉排序树 t1和t2&#xff0c;使得t1中的所有结点关键字的值都小于x&#xff0c;t2中所有结点关键字都大于x。 typedef struct BSTNode{int data;str…...

搭建es环境

centos7搭建elasticsearch环境 首先考虑使用 Docker 来安装 Elasticsearch、Kibana 和 Logstash。在安装过程中&#xff0c;可能会遇到一些问题&#xff0c;但通过适当的方法可以解决。 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.14.3 首先创建一个网络&a…...

FanControl完整使用指南:解决风扇控制难题的实用技巧

FanControl完整使用指南&#xff1a;解决风扇控制难题的实用技巧 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/…...

ARM TLB失效指令原理与应用实践

1. ARM TLB失效指令深度解析在ARM架构中&#xff0c;TLB&#xff08;Translation Lookaside Buffer&#xff09;作为内存管理单元&#xff08;MMU&#xff09;的关键组件&#xff0c;负责缓存虚拟地址到物理地址的转换结果。当操作系统修改页表或进行上下文切换时&#xff0c;必…...

如何永久保存微信聊天记录?WeChatExporter一站式解决方案

如何永久保存微信聊天记录&#xff1f;WeChatExporter一站式解决方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字时代&#xff0c;微信聊天记录承载着我们的工…...

手把手教你用Matlab R2018a为TI C2000 DSP安装Embedded Coder支持包(含账户与版本避坑)

从零搭建Matlab与TI C2000 DSP的嵌入式开发环境&#xff1a;避坑指南与实战解析 当Matlab R2018a遇上TI C2000系列DSP处理器&#xff0c;工程师们便获得了一个从算法设计到硬件部署的完整解决方案。不同于传统的CCS开发模式&#xff0c;这种基于模型的设计&#xff08;Model-Ba…...

League Akari:英雄联盟客户端终极智能助手完整指南

League Akari&#xff1a;英雄联盟客户端终极智能助手完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款基于LCU API…...

5分钟掌握直播间数据抓取:Live Room Watcher终极指南

5分钟掌握直播间数据抓取&#xff1a;Live Room Watcher终极指南 【免费下载链接】live-room-watcher &#x1f4fa; 可抓取直播间 弹幕, 礼物, 点赞, 原始流地址等 项目地址: https://gitcode.com/gh_mirrors/li/live-room-watcher Live Room Watcher是一款基于Java开发…...

AI编程协作实战:从提示工程到全周期开发工作流

1. 项目概述&#xff1a;从零开始的AI编程启蒙最近在GitHub上看到一个挺有意思的项目&#xff0c;叫jnMetaCode/ai-coding-101。光看名字&#xff0c;你大概能猜到它和AI编程有关&#xff0c;但“101”这个后缀又暗示着它的入门属性。作为一个在代码堆里摸爬滚打多年的老码农&a…...

软工大学生亲测:用 Claude Code 武装自己,从学渣到 offer 收割机

大家好&#xff0c;我是一个既研究过 K 线、又写过几十万行代码的老学姐。最近一个软件工程大三的实习生问我&#xff1a;"师姐&#xff0c;我感觉自己什么都不会&#xff0c;投了 300 份简历&#xff0c;石沉大海……"我当时差点把咖啡喷出来——不是因为他惨&#…...

SpringBoot项目里用Sharding-JDBC做分库分表,这5个配置项最容易踩坑

SpringBoot整合Sharding-JDBC分库分表&#xff1a;五大高频配置陷阱与实战解决方案 当数据库单表数据量突破千万级大关时&#xff0c;分库分表几乎是每个Java开发者必须面对的课题。作为Apache ShardingSphere的核心模块&#xff0c;Sharding-JDBC以其轻量级、低侵入的特性成为…...

指标漂移、用户冷启动、LLM幻觉干扰——大模型A/B测试三大盲区全解析,SITS大会实证数据支撑

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;指标漂移、用户冷启动、LLM幻觉干扰——大模型A/B测试三大盲区全解析&#xff0c;SITS大会实证数据支撑 在2024年SITS&#xff08;Scalable Intelligence Testing Summit&#xff09;大会上&#xff0c…...