如何在查询中对GROUP BY的结果进行分组?

时间:2013-09-05 16:47:25

标签: mysql group-by

我想选择5个最畅销的文章。

SELECT ID, shop, article_nr, count(*) as count
FROM table
GROUP BY shop, article_nr
ORDER BY count DESC
LIMIT 5

此查询的结果:

ID | shop   | article_nr | count
--------------------------------------
71 | amazon | 123        | 280
98 | amazon | 223        | 170
35 | amazon | 323        | 99
7  | ebay   | 456        | 71
11 | amazon | 789        | 49
4  | ebay   | 032        | 10

如何在第二步中按“商店”列对此结果进行分组(可能会编辑查询)?

它应该看起来像这样(前5名只有'一个'商店):

ID | shop       | article_nr  | count
--------------------------------------
71 | amazon     | 123         | 280
7  | ebay       | 456         | 71
.. | shop_x     | ...         | 55
.. | shop_y     | ...         | 40
.. | shop_z     | ...         | 37

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

这就是你想要的

SELECT id, shop, article_nr, count FROM table n 
WHERE count = (SELECT MAX(count) FROM table GROUP BY shop HAVING shop = n.shop) LIMIT 5;

答案 1 :(得分:0)

热门且描述良好的问题答案就在这里:https://stackoverflow.com/a/612268/1803682

具体如何选择(其他列)

上的AggregateFunction(column)distinct

如果您想在SQL Fiddle中使用它并发布它,我将很乐意提供更多帮助。