MySQL 计算多列中的不同值

MySQL count distinct values in multiple columns

我需要计算光顾每个餐厅位置的不同人数。同一人多次访问同一地点只计算一次。

输入:

location    visitor
-------------------
sydney      john
melbourne   john
melbourne   jane
melbourne   pete
sydney      paul
melbourne   jane
sydney      jake
sydney      john
sydney      john
melbourne   jake
sydney      john

预期输出:

location    count
-----------------
sydney      3
melbourne   4

我已尝试按照此处的示例进行操作 Using group by on multiple columns,嵌套 SQL 查询像这样

select distinct location,count(*) as c from (select distinct location,distinct visitor from guests) group by location,visitor order by c desc

和无休止的谷歌搜索,但没有运气。

您需要按位置分组,但您的 DISTINCT 是按访问者分组的

select 
      location,
      count( DISTINCT visitor) as c
   from 
      guests
   group by 
      location
   order by 
      c desc

不过,考虑到你的SAMPLE数据不好。最好查找 tables,例如具有 ID 和位置的 Locations,以及具有 ID 和名称的 People table。那么您的访问 table 将有一个 Location_ID 和一个 Person_ID。

如果你有一个 无名氏 约翰·史密斯。

仅仅让 John 并不能真正区分并且会给出错误的答案。