mysql中的lead函数和over函数

文章目录

  • mysql中的lead函数和over函数
    • 作用
    • 需求场景
    • 实现方法
    • group by分组和使用over函数分组有什么区别?

mysql中的lead函数和over函数

作用

over函数是用来分组加排序的,然后等over函数分好组排好序之后,再使用lead函数去找当前分组内的下一行数据的某个字段值,具体是哪个字段由over函数指定,如果当前分组内没有下一条数据的话,那么返回null空值。

需求场景

我们有一个销售表,有很多类型的产品,我们想要根据产品id分组,然后再根据产品销售时间排序,我们想要显示下个月的销售额,以及下个月增加的销售额。

上面这个场景需求就是可以使用lead函数结合over函数来实现。

实现方法

首先看一下我们的销售表结构,如下图:
在这里插入图片描述
然后看一下里面我们存储的数据,如下图:
在这里插入图片描述
接着来看下我们执行的sql语句如下:

SELECTproduct_id,sales_date,sales_amount,LEAD(sales_amount) OVER (PARTITION BY product_id ORDER BY sales_date) AS next_sales_amount,(LEAD(sales_amount) OVER (PARTITION BY product_id ORDER BY sales_date) - sales_amount) AS growth_amount
FROMsales_data;

我们上面查询的时候追加了两个字段,一个是next_sales_amount,也就是分组内下一条数据的销售额;另外一个是growth_amount,也就是销售额增长量,也就是分组内下一条数据的销售额减去当前销售额;

over函数的功能:现根据product_id产品id进行分组,分组完之后又根据sales_date销售日期进行排序,然后取出当前行的销售额sales_amount;
lead函数的功能:取出当前分组的下一条数据的某个字段的值,如果当前分组内已经是最后一条数据了,那么会返回null。

上面的sql语句的执行结果,如下图:
在这里插入图片描述

group by分组和使用over函数分组有什么区别?

1.输出结果不同

  • over函数:over函数允许在不减少结果集行数的情况下添加聚合列。即每行都可以保留原有的列值的同时,增加额外的分析结果列,比如说下一条数据是多少,或者是下一条数据比起当前数据的增长额是多少。
  • group by子句:group by子句则将数据汇总为较少的行,每个分组只返回一行聚合结果,因此,它的输出行通常会比表的原始行数要少,适用于需要对数据进行高度汇总的情况。比如在student学生表中,计算每个班级的学生的平均分,这个使用group by子句先要根据班级id进行分组,然后再使用avg(score)聚合函数计算平均分,原始数据可能有540行,如果一个班级90人的话,那么使用group by之后的输出结果只会有6行,因为只有两个班级嘛!但是如果是使用over函数进行班级分组的话,那么输出结果行数仍会有540行。

2.适用场景不同

  • over函数:适用于需要同时查看原始行和聚合数据的场景,输出结果中不会少原始行,并且也会新增聚合数据。例如,在销售数据表中计算每个产品在连续月份中的销售额增长情况,可以使用lead函数结合over函数来实现。
  • group by子句:适用于需要对数据进行分组并汇总的场景。例如,计算每个部门的总薪水时,使用group by子句可以直接得到每个部门的薪水总和,而不显示每个员工的薪水详情。可能你的员工表的数据有1000行,但是公司只有36个部门,那么你的输出结果行数就只有36行。

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

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

相关文章

NUC980-OLED实现全中文字库的方法

1.背景 有一个产品,客户需要屏幕展示一些内容,要带一些中文,实现了OLED12864的驱动,但是它不带字库,现在要实现OLED全字库的显示 2.制作原始字库 下载软件pctolcd2002 设置 制作字库 打开原始文件 用软件自带的&…

“用友审批+民生付款”,YonSuite让企业发薪更准时

随着现代企业经营模式的不断创新和市场竞争的加剧,企业薪资管理和发放的效率、准确性和及时性已成为企业管理的重要一环。然而,在实际操作中,许多企业面临着薪资管理复杂、发放流程繁琐、数据不准确等难点和痛点。为了解决这些问题&#xff0…

【重磅消息】微软开源了自家的Florence-2,处理各种视觉任务的统一模型

在人工通用智能(AGI)系统的世界里,一个重要的转变正在发生,那就是利用多功能的、预先训练好的表征,在各种应用中表现出与任务无关的适应性。这种转变始于自然语言处理(NLP)领域,现在…

机械硬盘和固态硬盘的区别及判断硬盘类型的方法

HDD(机械硬盘)和 SSD(固态硬盘)的主要区别 存储介质 HDD:使用磁性盘片(磁盘)和机械读写头SSD:使用闪存芯片 速度 HDD:读写速度较慢,因为需要机械读写头在…

新学期分班群发话术

尊敬的家长们: 我是XX学校X年级的班主任XXX老师。随着新学期的到来,我带着满心的期待和责任,向各位宣布一个重要的信息:本校即将开始新学年的分班工作。 分班的目的: 分班是为了适应不同学生的学习需求,确…

SaaS企业营销:PLG转型下SaaS企业如何成为赢家

在数字化浪潮的推动下,SaaS(软件即服务)行业正经历着前所未有的变革。特别是随着产品引领增长(PLG)模式的兴起,SaaS企业正面临着前所未有的机遇与挑战。如何在PLG转型中脱颖而出,成为行业赢家&a…

汇川学习笔记7 - 雕刻机项目

1、系统上电轴准备好之后,自动复回原点一次, 2、在雕刻机面板上有三个按钮用来控制画三种图形 3、注意cnc代码放置的文件夹 4、FILE0文件内容 5、FILE1文件内容 6、FILE2文件内容 7、程序代码下载地址 https://download.csdn.net/download/qq_6191667…

无需科学上网:轻松实现国内使用Coze.com平台自己创建的Bot(如何实现国内免费使用GPT-4o/Gemini等最新大模型)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 如何在国内使用 Coze.com 创建的 Bot 📒📝 创建Bot📝 实现国内使用📝 测试⚓️ 相关链接 ⚓️📖 介绍 📖 Coze.com 是一个强大的平台,允许用户创建各种类型的 Bot。然而,许多国内用户可能会遇到访问问题,导致无法…

Centos7.9安装openldap

文章目录 一、背景二、正文2.1 openldap服务端必要软件安装2.1.1使用yum命令安装2.1.2安装libdb相关依赖2.1.3复制一个默认配置到指定目录下,并授权,这一步一定要做,然后再启动服务,不然生成密码时会报错2.1.4授权给ldap用户&…

windows系统共享文件时,有权限文件访问被拒绝

我们在使用windows操作系统的时候,需要复制或者更改网络中的共享文件。但是有时候会出现图下的情况:文件访问被拒绝 查看共享文件的安全属性,发现Everyone的权限是完全控制的 这个时候我们可以看到,这个共享文件图标右上方带了一把…

vue2实现一个简易实用的日历(可特殊标记多个日期)

效果如下&#xff1a; <template><div class"calendar"><div class"header"><button click"previousMonth"><</button><h2>{{ currentYear }}-{{ currentMonth }} </h2><button click"nex…

【SpringCloud】Nacos

Nacos简介 2018年6月&#xff0c;Eureka 2.0宣布闭源&#xff08;但1.X版本仍然活跃&#xff09;&#xff0c;同年7月&#xff0c;阿里Nacos宣布开源&#xff0c;并迅速成为国内开发者关注的焦点。作为Eureka的替代品&#xff0c;Nacos目前已经成为国内开发者的首选。 Nacos&…

error: ‘CV_YUV2BGR_UYVY‘ was not declared in this scope

遇到这个问题时&#xff0c;按照如下修改可解决问题。 //cv::cvtColor(yuvImg, rgbImg, CV_YUV2BGR_UYVY);cv::cvtColor(yuvImg, rgbImg, cv::COLOR_YUV2RGB_UYVY);

浅析Vite本地构建原理

前言 随着Vue3的逐渐普及以及Vite的逐渐成熟&#xff0c;我们有必要来了解一下关于vite的本地构建原理。 对于webpack打包的核心流程是通过分析JS文件中引用关系&#xff0c;通过递归得到整个项目的依赖关系&#xff0c;并且对于非JS类型的资源&#xff0c;通过调用对应的loade…

《人人都是产品经理》笔记2:一个需求的奋斗史

一个需求的奋斗史 用户&#xff01;用户&#xff01;为什么会有需求&#xff1f;用户比客户更大以用户为中心的思想&#xff0c;以老板为中心的行动 用户研究方法 需求采集用户需求并不是产品需求&#xff0c;满足需求的三种方式把用户需求转化成产品需求 需求打包 BRD 产品会议…

Docker 搭建 MinIO 对象存储

Docker 搭建 MinIO 对象存储 一、MinIO MinIO 是一个高性能的对象存储服务器&#xff0c;用于构建云存储解决方案。MinIO 允许你存储非结构化数据&#xff08;如图片、视频、日志文件等&#xff09;以对象的形式。MinIO 提供简单的部署选项和易于使用的界面&#xff0c;允许你…

【免费API推荐】:汇总多种免费API接口(12)

欢迎来到幂简集成汇总的多种免费API接口世界&#xff01;我们致力于为开发者和创业者提供一个集成了各种免费API接口的平台。在这里&#xff0c;您可以轻松获取多种免费API接口&#xff0c;涵盖了各种领域的需求&#xff0c;包括天气、地图、社交媒体、专利相关信息等等。我们精…

哪里还能申请免费一年期SSL证书?

SSL证书是网络安全的基石之一&#xff0c;它确保了数据传输的安全性和网站身份的真实性。而申请免费一年期SSL证书&#xff0c;则为广大用户提供了一个经济高效的方式来提升网站的安全性。具体介绍如下&#xff1a; 基于不同服务平台的免费SSL证书申请 FreeSSL&#xff1a;此平…

硬盘监控和分析工具:Smartctl

文章目录 1. 概述2. 安装3. 使用4. smartctl属性信息介绍 1. 概述 Smartctl&#xff08;S.M.A.R.T 自监控&#xff0c;分析和报告技术&#xff09;是类Unix系统下实施SMART任务命令行套件或工具&#xff0c;它用于打印SMART自检和错误日志&#xff0c;启用并禁用SMRAT自动检测…

【MySQL】索引的原理及其使用

文章目录 什么叫索引减少磁盘IO次数缓存池(Buffer Pool&#xff09;MySQL的页页内目录页目录 正确理解索引结构为什么Innodb的索引是B树结构各种存储引擎支持的索引聚簇索引和非聚簇索引索引类型 关于索引的操作创建主键索引唯一索引的创建普通索引的创建查看索引删除索引 什么…