MS Access查询:获取与最大销量关联的最小时间间隔
解决MS Access中获取商品最大销量对应最小间隔的问题
问题分析
原查询直接对[MODEL ID]分组后取MAX([QUANTITY])和MIN([INTERVAL]),但这两个值并非关联关系——MIN([INTERVAL])会取该商品所有记录里的最短间隔,而非最大销量对应的最小间隔。
解决方案
需要先定位每个商品的最大销量,再在该销量对应的所有记录中筛选出最小的间隔。可以通过子查询关联实现:
SELECT t1.[MODEL ID], t1.[QUANTITY] AS MAX_QUANTITY, MIN(t1.[INTERVAL]) AS MIN_INTERVAL_FOR_MAX_QUANTITY FROM [TABLE X] t1 INNER JOIN ( -- 子查询:获取每个商品的最大销量 SELECT [MODEL ID], MAX([QUANTITY]) AS MAX_Q FROM [TABLE X] GROUP BY [MODEL ID] ) t2 ON t1.[MODEL ID] = t2.[MODEL ID] AND t1.[QUANTITY] = t2.MAX_Q GROUP BY t1.[MODEL ID], t1.[QUANTITY]
逻辑说明
- 子查询
t2先计算每个商品的最大销量MAX_Q; - 将原表
t1与t2关联,筛选出所有销量等于该商品最大销量的记录; - 对筛选后的记录按商品分组,取最小的
INTERVAL,即为最大销量对应的最小间隔。
针对商品B的效果
执行该查询后,商品B会筛选出销量为50的所有记录(间隔3和4),然后取其中最小的间隔3,完全符合需求。
内容的提问来源于stack exchange,提问作者Stefan Liiceanu
相关产品推荐
相关产品推荐

