MySql数据库Group分组内排序取数据

news/2024/11/14 23:19:11/

文章目录

  • 业务场景

业务场景

生产中遇到一个需求,需要统计在某段时间内指定客户的财务收款信息。
比如统计A客户10月1日~11月1日之间的财务应数据,在统计汇总的时候,需要计算A用户在10月1号前的结余信息,这就需要查询10月1日前这个客户的最后一次交易记录。

刚开始是准备直接用数据库的自增主键来取10月1日前的最后一条记录,后来发现有问题。在实际财务操作中,最大的Id不一定就是最后一笔数据。因为实际操作中根据单据时间来进行录入,导致Id排序不可靠。

需要再分组排序中取最值,SQL如下:

SELECT IdFROM(SELECT CustomerId AS CustomerId,OrgId AS OrgId,ReceivableDetailId AS Id,row_number() over (partition by CustomerId,OrgId order by ActualSourceDate,ReceivableDetailId) AS tempIdFROMreport_financial_receivable_source WHERETenantId = 100 ) AS tempWHERE temp.tempId = 1

这里就是按照CustomerId,OrgId分组,组内按照ActualSourceDate,ReceivableDetailId排序,最后取其中最早的一条记录。
如果需要求最晚的记录,则排序方式改为倒序。


http://www.ppmy.cn/news/1547061.html

相关文章

anzocapital 昂首资本:外汇机器人趋势判断秘籍

再盲目交易而不借助像 anzocapital 昂首资本所了解的外汇机器人趋势判断方法,投资者在外汇市场将面临亏损的风险,anzocapital 昂首资本深知交易策略的重要性,就像外汇机器人确定趋势方向的方法,对投资者有着非凡的意义。 在外汇交…

Go 语言已立足主流,编程语言排行榜24 年 11 月

Go语言概述 Go语言,简称Golang,是由Google的Robert Griesemer、Rob Pike和Ken Thompson在2007年设计,并于2009年11月正式宣布推出的静态类型、编译型开源编程语言。Go语言以其提高编程效率、软件构建速度和运行时性能的设计目标,…

mysql中数据不存在却查询到记录?

前言 首先看下面的查询语种 select * from AudioKnowledgeChatInfo where AudioId297795550566600706; 查询结果如下 看到上面的查询结果,是不是一脸懵?这audioId明显不对啊,怎么查询到了? 原因剖析 首先我们来看看数据库表…

JS的学习与使用

JS的学习与使用 一 什么是Javascript? Javascript是一门跨平台,面向对象的脚本语言,是用来控制网页行为的,它能使网页可以交互 java与Javascript是完全不同的语言,不论是概念还是设计,但是基础语法类似 E…

Unity插件NodeCanvas之行为树的详细教程

文章目录 前言叶节点 Leafs1、行为 Action2、判断 Condition控制组件 Composites1、顺序执行器 Sequencer2、选择执行器 Selector3、概率选择执行器 Probability Selector4、权重选择执行器 Priority Selector5、平行执行器 Parallel6、轮流选择器 Flip Selector7、完整执行器 …

前端开发快速进行 Mock 数据的方法

前端开发快速进行 Mock 数据的方法 在前端开发中,模拟数据(Mock Data)是不可或缺的一部分,它可以帮助开发者在没有后端接口的情况下快速推进项目进度。然而,在使用如 Mock.js 这样的工具时,开发者可能会遇…

Python网络爬虫与数据采集实战——网络协议与HTTP

目录 1. HTTP协议简介 2. 常见的请求方法 3. 状态码含义 实际应用中的HTTP协议 1. 如何在爬虫中使用HTTP协议 2. 模拟浏览器请求与爬虫反爬虫技术 3. 高级HTTP请求 实现爬虫时HTTP协议的优化与常见问题 总结 1. HTTP协议简介 HTTP的定义与作用 HTTP(超文本…

Android关机流程知多少?

在 Android 中,关机流程涉及系统各个组件的协同工作,确保设备在断电之前能够安全地关闭所有活动并保存数据。以下是 Android 系统中关机流程的详细介绍: 1. 用户触发关机请求 关机流程由用户的操作触发,通常有以下几种方式&#…