如果多个经理来自同一城市,则显示经理详细信息

To display manager details if more than one manager is from same city

我有一个tablemanager(managerid, name, address, city, phone)。如果不止一位经理来自同一城市,我必须显示城市、姓名和 phone 详细信息。 我的代码是:

  select m.city, m.name, m.phone
    from manager m
group by m.name
  having count(m.city) > 1;

但这在第一行告诉我一个错误,说“不是按表达式分组”。
请帮忙!

一个简单的方法使用exists:

select m.*
from manager m 
where exists (select 1
              from manager m2
              where m2.city = m.city and m2.managerid <> m.managerid
             );

您还可以将 count() 用作 window 函数:

select m.*
from (select m.*, count(*) over (partition by city) as cnt_city
      from manager m
     ) m
where cnt_city > 1;