假设我有一张表格,显示一个人在24小时内消耗的水果类型,如下所示:
Name Fruit
Tim Apple
Tim Orange
Tim Orange
Tim Orange
Lisa Peach
Lisa Apple
Lisa Peach
Eric Plum
Eric Orange
Eric Plum
我如何获得一个仅显示每个人消耗最多的水果以及消耗的水果数量的表。换句话说,看起来像这样的表:
Name Fruit Number
Tim Orange 3
Lisa Peach 2
Eric Plum 2
我试过了
SELECT Name, Fruit, Count(Fruit)
FROM table
GROUP BY Name
但这会返回错误,因为Name也必须位于GROUP BY语句中。我尝试过的所有其他方法都返回所有值的计数,而不仅仅是最大值。MAX(COUNT())似乎不是有效的语句,所以我不确定还有什么要做。
这很痛苦,但是您可以做到。从查询开始,然后使用join
:
SELECT n.Name, n.Fruit
FROM (SELECT Name, Fruit, Count(Fruit) as cnt
FROM table as t
GROUP BY Name, Fruit
) as t INNER JOIN
(SELECT Name, max(cnt) as maxcnt
FROM (SELECT Name, Fruit, Count(Fruit) as cnt
FROM table
GROUP BY Name, Fruit
) as t
GROUP BY Name
) as n
ON t.name = n.name and t.cnt = n.maxcnt;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句