我有一个表(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行。
样品表
如果我将前3行分组,则预期结果应该是:
答案 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