SQL 查询 3 列,计数 1 并仅对另一列进行分组

SQL query 3 columns, count 1 and group only another one

这是我的table

names   city    food
jim  | london  | pizza
jim  | london  | burrito
anne | paris   | croissant
tim  | berlin  | wurst
tim  | berlin  | schnitzel
tim  | berlin  | beer

我想按名称计算不同的城市和组,但只得到一个食物条目:

jim, 2, pizza
anne, 1, croissant
tim, 3, wurst

但这行不通

SELECT DISTINCT name, food, COUNT(city) AS cnt
FROM mytable
GROUP BY name
ORDER BY cnt DESC;

最佳 约尔格

根据结果尝试如下所示,看来您只需要 max() 聚合函数与您的现有查询

select name, max(food), COUNT(city) AS cnt
FROM mytable GROUP BY name