Sql 在Access中获取列中不同值的数目

Sql 在Access中获取列中不同值的数目,sql,ms-access,count,distinct,Sql,Ms Access,Count,Distinct,为了得到下面的例子,我或多或少尝试了count和distinct的所有组合,除了正确的组合 输入:表t1 NAME | FOOD Mary | Apple Mary | Banana Mary | Apple Mary | Strawberry John | Cherries 预期产出: NAME | FOOD Mary | 3 John | 1 注意:玛丽把苹果分成

为了得到下面的例子,我或多或少尝试了count和distinct的所有组合,除了正确的组合

输入:表t1

NAME       |  FOOD
Mary       |  Apple
Mary       |  Banana
Mary       |  Apple
Mary       |  Strawberry
John       |  Cherries
预期产出:

 NAME      |  FOOD
Mary       |  3
John       |  1
注意:玛丽把苹果分成两行,但她有3行,因为我们在列中有3个不同的值。
我只为她在食物栏中获得了4分,但我需要3分:

从一个查询开始,该查询将为您提供名称和食物的独特组合:

select a.name as NAME, a.count(name) as Food 
from 
(SELECT distinct NAME,Food from table)a
选择不同的t1.NAME,t1.FOOD 从t1开始 然后,您可以将其用作另一个查询中的子查询,在该查询中,您可以按分组和计数:

选择子名称,将*计为[食物] 从…起 选择不同的t1.NAME,t1.FOOD 从t1开始 作为子 按子名称分组;
到目前为止,您尝试的查询是什么?你能把它寄出去吗?
select a.name, sum(a.FoodCount) from(
select distinct name,COUNT(food) as FoodCount from #t1 group by name, food ) as a group by a.name order by 2 desc