我的员工表如下所示
employeenumber int(11) PK
lastname varchar(50)
firstname varchar(50)
还有一个像这样的客户表
customernumber int(11) PK
salesrepemployeenumber int(11)
creditlimit double
我如何找到拥有最多客户的员工? 我知道我必须查询customer表中的salesrepemployeenumber列,以找出哪个雇员的客户数最多,最多?然后我需要返回员工编号和全名。
解决方案是什么?
答案 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;