MySQL:获取表中每个组的第n个最大值

SQLnoob

免责声明:我对此很陌生,因此如果我使用不正确的术语,我会先道歉-如果有任何不清楚的地方,我将很乐意澄清。

假设我有一个这样的表,该表按商店位置和部门跟踪所有订单:

STORE          DEPT          ORDER          AMOUNT
--------------------------------------------------   
NYC            Clothing      P00001         $30
NYC            Clothing      P00002         $25
NYC            Clothing      P00003         $40
...            ...           ...            ...
NYC            Housewares    P00011         $140
NYC            Housewares    P00012         $125
NYC            Housewares    P00013         $140
...            ...           ...            ...
CHI            Clothing      P00021         $30
CHI            Clothing      P00022         $20
CHI            Clothing      P00023         $20
...            ...           ...            ...
CHI            Housewares    P00031         $180
CHI            Housewares    P00032         $110
CHI            Housewares    P00033         $125
...            ...           ...            ...

如果我想要每个部门,每个商店的最高销售额,我认为这仅仅是

SELECT Store, Dept, max(Amount)
FROM mytable
GROUP BY Store, Dept

但是,如果我想要每个部门的第二高销售额怎么办?换句话说,我想要一个从上表中产生以下结果的查询:

STORE          DEPT          ORDER          AMOUNT
--------------------------------------------------
NYC            Clothing      P00001         $30
NYC            Housewares    P00013         $140
CHI            Clothing      P00022         $20
CHI            Housewares    P00033         $125

请注意,我不一定要第二高的UNIQUE金额-如果与最高价值并列,就像NYC-Housewares一样,我需要返回该价值(而不是$ 125)。

在SQL Server中,我了解到可以PARTITION BY在组中进行排序,然后选择所需的等级,但是似乎没有相同的语法适用于MySQL。我在网上发现的类似问题涉及使用LIMIT,但我还没有找到适合我情况的解决方案。

任何帮助将不胜感激。

历史学家

我希望有更好的方法,但是您可以通过相交或不相交两个子查询来实现:

Select mytable.Store, mytable.Dept, mytable.Order, mytable.Amount
from mytable m
inner join 
  (Select Amount from mytable n where m.store = n.store and m.dept = n.dept order by Amount desc limit 2) as high_enough
  on mytable.Amount = high_enough.Amount
left join 
   (Select Amount from mytable n where m.store = n.store and m.dept = n.dept order by Amount desc limit 2) as too_high
  where too_high.Amount is null
group by Store, Dept;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取表中每个组的最大值

来自分类Dev

在MySQL查询中获取每个组的最大值

来自分类Dev

根据第二个表获取每个组的最大值记录

来自分类Dev

如何从sql中的表中获取第5个最大值?

来自分类Dev

如何获取数据框中每个组的10个最大值?

来自分类Dev

从每个组的Oracle获取最大值

来自分类Dev

MYSQL返回每个组的最大值

来自分类Dev

VBA-获取数组中第n个最大值的索引

来自分类Dev

获取MySQL中组中的最大值

来自分类Dev

在MySQL中获取组中的最大值

来自分类Dev

范围中第N个最大值的索引

来自分类Dev

如何从列表中的每个元素都是元组的列表中获取元组第 0 个索引处的最大值?

来自分类Dev

通过组获取表的最大值

来自分类Dev

从MySQL中的表中获取最大值,不同值

来自分类Dev

在Excel中:在给定约束的一组数字中返回第n个最大值

来自分类Dev

如何从表中获取一组值的总和,然后取这些值的最大值并回显5个最大值

来自分类Dev

mySQL计数并从表中获取最大值

来自分类Dev

Mysql 一个表中的多个最大值

来自分类Dev

MySql的:选择每个组的最大值与相应的ID值

来自分类Dev

pyspark:grouby,然后获取每个组的最大值

来自分类Dev

获取Java数组中n个最大值的索引

来自分类Dev

Python从字典中获取N个最大值

来自分类Dev

根据多列从每个组中获取具有最大值的行

来自分类Dev

从表中获取最大值

来自分类Dev

按每个组中的最大值过滤数据框

来自分类Dev

为数据框中的每个组取最大值

来自分类Dev

获取每个阶段中每个求和量的最大值

来自分类Dev

获取每个阶段中每个求和量的最大值

来自分类Dev

如何从每行列值组中获取最大值

Related 相关文章

热门标签

归档