在SQL中仅对前n行进行分组

时间:2019-09-26 04:32:55

标签: mysql

我有一个表(myTab),其中有3列(id,marketValue,stock)。

我想按市场价值对前n行进行分组。我可以想到这个嵌套查询。

SELECT AVG(marketValue), stock FROM (SELECT marketValue, stock FROM myTab
order by(marketValue) desc LIMIT(n)) GROUP BY stock. 

我们可以进一步优化它吗?这不是 not 来获得每个组的前n行。

样品表

enter image description here

如果我将前3行分组,则预期结果应该是:

enter image description here

1 个答案:

答案 0 :(得分:0)

SQL表表示无序集。因此,当我们谈论第一行或最后一行时,我们需要确定行的顺序。因此,您需要在内部查询中使用order by子句才能获得前n行。休息看起来不错-

SELECT AVG(marketValue), stock
FROM (SELECT marketValue, stock
      FROM myTab
      ORDER BY id
      LIMIT(n)
) X
GROUP BY stock