这是一个通用的问题,很多业务场景下都存在,例如取出价格最贵的那个商品,取出最新的价格、等等
这类问题可以归为,如何将分组中最大值所在的行取出来
假设我们有一张表存储着”供应商ID_商品ID_采购价格_采购时间“四列信息,其中供应商ID_商品ID为联合主键
要求:对于某个商品,取出最近一次采购的价格?
错误作法:
select supplier_id , product_id , last_price , max(last_time)
from table
where product_id = 12345 group by product_id
错误原因:存在group by子句时,在select列表中出现的列只能是group by子句中提到的列,或者是使用了聚集函数的列,所以这句SQL中取到的supplier_id和last_price都可能是错的
正确作法:
select t1.supplier_id , t1.product_id , t1.last_price , t1.last_time
from table t1
where t1. product_id = 123456 and
t1.last_time = ( select max(t2.last_time) from table t2 where t1.product_id = t2.product_id)
或者:
select t1.supplier_id , t1.product_id , t1.last_price , t1.last_time
from table t1
left join table t2
on t1.product_id = t2.product_id and t1.last_time < t2.last_time
where t2.product_id is null;
再或者:
select t1.supplier_id , t1.product_id , t1.last_price , t1.last_time
from table t1
join (
select product_id , max(last_time) max_last_time
from table
group by product_id ) as t2
on t1.product_id = t2.product_id and t1.last_time = t2.max_last_time;
分享到:
相关推荐
表:t_test -------------------------------------- id(int) cost(int) des Autoid(id) -------------------------------------- 1 10 aaaa 1 1 15 bbbb 2 1 20 cccc 3 ...取每一类id中cost最大的纪录
主要是介绍在 JDK8中使用 stream 流的 groupingBy 方法源进行最大值分组、最小值分组、平均值分组、统计分组
使用Linq语法与Lambda表达式分组取泛型数组某列的最小值/最大值
pandas获取groupby分组里最大值所在的行方法 如下面这个DataFrame,按照Mt分组,取出Count最大的那行 import pandas as pd df = pd.DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','...
在这个问题中,我们关注的是一个特定的int数组{1, 3, 5, -2, 4, 6},我们需要计算这个数组中的最大值、最小值、元素和以及平均值。这些都是数据分析和算法基础中的关键概念。 1. **最大值**:数组中的最大值是指...
本程序可以高效的实现对excel数据中多个相同的x值对应的y值不同情况下求得所有x对应的y的最大值,并且不会重复显示,相比与用excel的矩阵运算处理时需要占用大量CPU资源和计算时间长久,本方法在面对大量数据情况下...
VBA源代码,根据某列中的最大值,拿到该行的行号。此代码为取出若干小区的信息,7*24小时,拿到某列值最大的行号,精简成7行
在JavaScript中可以通过内置的 Math.max() 的最大值,但是要从多重数组中取出最大值,还是有一定的难度。 问题描述 假设你有一个数组,而且这个数组中包含了数字的子数组,而我们要做的是从数组中的每个子数组中返回...
根据给定的信息,我们需要设计一个算法来找到数组A[1..n]中的最大值和次最大值,并且分析该算法在最坏情况下的时间复杂度。以下是对这一问题的详细探讨。 ### 算法设计 #### 方法一:单次遍历 我们可以采用一种...
同时,获取循环中最后一个索引或最大索引,只需在循环外部记录循环变量的最终值,或者在循环内进行特定条件的判断。以上方法可以灵活应用于各种场景,帮助我们处理数组数据并生成所需格式的字符串。
本文将讨论如何在Erlang中通过遍历列表来获取位于特定位置元素的最大值。 在Erlang中,列表是由一系列元素组成的有序集合,元素可以是任意数据类型,包括其他列表。列表在Erlang中是通过链表实现的,这意味着在列表...
在本文中,我们将深入探讨如何使用SQL语句实现分组小计统计,这是一个常见的需求,尤其是在数据分析、报表生成和业务洞察领域。我们将基于提供的部分代码示例,详细解释其背后的逻辑和技术要点。 ### SQL实现分组小...
–按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...
在实际业务中有的时候要取出数组中的最大值或最小值。但在数组中并没有提供arr.max()和arr.min()这样的方法。那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最大值和最小值的一些...
在3x3模板中,当指定k=1时为最小值滤波,指定k=5时为中值滤波,指定k=9时为最大值滤波。 此外,该程序还要求实现以下功能 1. 显示原图像、移除像素后的图像和恢复出的图像。 2. 求该去噪算法的MSE值。
《电子功用-含有电源插头取出结构的包装盒》是一份深入探讨电子设备包装设计的专业文档,主要聚焦于如何在包装盒中巧妙地整合电源插头的取出结构,以提升用户体验和产品安全性。这份资料是电子行业从业者、设计师...
有信取出机程序是专为操作侧装箱的YUSHIN取出机设计的一款软件应用,其主要目的是提高自动化生产线上的工作效率和精度。YUSHIN是一家知名的工业机器人制造商,以其精密和可靠的机械手设备而闻名,尤其在注塑、塑料...
前言取出数组中的最大值或者最小值是开发中常见的需求,但你能想出几种方法来实现这个需求呢?JavaScript 提供了 Math.max 函数返回一组数中的最大值
"取出机程式"是STAR星塔5轴驱动取出机STEC-380控制器的核心控制软件,主要用于自动化操作过程中的物料取出。这个程序是专为STAR公司的设备设计的,确保了高精度和高效的生产流程。在操作侧装箱,便于工人进行实时...
鼠标选择页面,取出页面选中值的方法,Java前端页面实现,需要的小伙伴可以去下载看看。