如何编写SQL查询每位chef的wnr及对应下属员工数量
问题原因
你的原SQL逻辑错位:werknemer表的每条员工记录中,chef字段存储的是该员工直属上级的用户编号,你直接按w.chef分组,但SELECT子句取的是w.wnr(下属的用户编号),最终统计结果的编号和人数对应关系自然和预期相反。
修正后的SQL
SELECT c.wnr, c.wnaam, COUNT(w.wnr) AS 'aantal werknemers' FROM werknemer w INNER JOIN werknemer c ON w.chef = c.wnr -- 关联获取上级的完整用户信息 GROUP BY c.wnr, c.wnaam -- 按上级的用户编号、名称分组统计
补充说明
如果需要同时展示没有下属的上级(下属数显示为0),可以换用左连接写法:
SELECT c.wnr, c.wnaam, COUNT(w.wnr) AS 'aantal werknemers' FROM werknemer c LEFT JOIN werknemer w ON w.chef = c.wnr GROUP BY c.wnr, c.wnaam
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

