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

标签 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

有人可以帮助我吗?

最佳答案

这就是你想要的

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;

关于mysql - 如何在查询中对 GROUP BY 的结果进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18641802/

相关文章:

MySQL快速检索每组中的最后一条记录

php - Laravel 自定义模型类 - 字段没有默认值

mysql - 按组合键的一部分分组

sql - 如何从数据库中选择所有不不同的行?

mysql - 如何在我的查询中添加一个新列以显示小于当前日期的数据?

mysql - Mysql 中的嵌套情况

mysql - MariaDB 的 Innodb 引擎变量

mysql - 条件 GROUP BY 结果

mysql - 在 MySQL 中过滤和聚合多个列很困难

MySQL:如果列等于这个或那个,则对行进行分组