如何找到拥有最多客户的员工

时间:2019-02-24 17:35:27

标签: mysql

我的员工表如下所示

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

还有一个像这样的客户表

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

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

解决方案是什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

加入两个表,将它们按employee表的主键分组,然后按递减顺序对结果进行排序,得到第一个结果(结果最多)

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;
相关问题