You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询各部门分配的戴尔品牌计算机数量的SQL实现方法

需求说明

查询结果需展示所有部门,以及每个部门当前分配的戴尔(Dell)品牌计算机数量,无戴尔设备分配的部门也需保留在结果中,对应数量显示为0。

关联表结构
  • Computer(计算机资产表):字段为Compid(计算机唯一标识)、Make(设备品牌)、Model(设备型号)、Myear(出厂年份)
  • Employee(员工表):字段为Id(员工唯一标识)、Ename(员工姓名)、Doj(入职日期)、Salary(基本工资)、Bonus(奖金)、Dept(所属部门)、Designation(岗位)、Manager(直属管理者)、Compid(员工分配使用的计算机ID)
实现SQL
SELECT
  all_depts.Dept AS 部门名称,
  COUNT(comp.Compid) AS 戴尔设备分配数量
FROM
  (SELECT DISTINCT Dept FROM Employee) all_depts
LEFT JOIN Employee emp 
  ON all_depts.Dept = emp.Dept
LEFT JOIN Computer comp 
  ON emp.Compid = comp.Compid 
  AND comp.Make = 'Dell'
GROUP BY all_depts.Dept
ORDER BY all_depts.Dept;
关键注意事项
  • 不要用内连接关联表,否则没有分配戴尔设备的部门会被直接过滤,不符合「展示所有部门」的要求
  • 品牌筛选条件comp.Make = 'Dell'必须写在左连接Computer表的ON子句中,不能写在WHERE子句里,否则左连接生成的空值会被WHERE条件过滤,同样会丢失无戴尔设备的部门
  • 计数时使用COUNT(comp.Compid)而非COUNT(*),前者会自动忽略左连接产生的空值记录,统计结果准确,后者会把空行也算入计数导致结果错误
  • 如果表中存储的戴尔品牌值存在大小写混写情况(如DELL/dell),可以把匹配条件改为LOWER(comp.Make) = 'dell'做兼容处理

内容的提问来源于stack exchange,提问作者Kedar Ingale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:18:34