如何找到大多数客户的员工

问题描述 投票:-1回答:2

我有一个看起来像这样的员工表

employeenumber int(11) PK 
lastname varchar(50) 
firstname varchar(50) 

还有一个看起来像这样的客户表

customernumber int(11) PK 
salesrepemployeenumber int(11) 
creditlimit double

如何找到大多数客户的员工?我知道我必须查询客户表中的salesrepemployeenumber列,以找出哪个员工的客户数最多,最大?然后我需要返回员工编号和全名。

解决办法是什么???

mysql
2个回答
1
投票

加入两个表,按雇员表的主键对它们进行分组,然后按降序计数结果,得到第一个结果(得到最多结果)

select employee.salesrepemployeenumber, employee.lastname, employee.firstname, count(*) as result
from employee
join customer
on employee.employeenumber = customer.salesrepemployeenumber
group by employeenumber
order by count(*) desc limit 0, 1;

1
投票

使用加入/计数/组:

SELECT 
    employees.employeenumber, -- employee id
    employees.lastname, -- sample employee name
    COUNT(customers.customernumber) AS customer_count -- the number of customers
FROM employees
LEFT OUTER JOIN customers -- I'm using a left join so we can see people with 0 as well
    -- get some shorter column names man
    ON customers.salesrepemployeenumber = employees.employeenumber
GROUP BY employees.employeenumber

简而言之,您选择所有员工,然后将它们与客户表的结果合并,然后按员工的ID对其进行分组。通过在COUNT操作期间使用GROUP BY,我们可以计算特定组的不同条目的数量。

从那里开始,选择结果中的最大值是一个问题,就像使用LIMIT / ORDER BY一样简单。

SELECT ...
ORDER BY customer_count DESC
LIMIT 1
© www.soinside.com 2019 - 2024. All rights reserved.