首页 > 解决方案 > sql查询表之间的汇总值

问题描述

假设你有两张桌子

部门

dept_id

部门名称

dept_sub_id

子部门

dept_sub_id

子部门名称

sub_dept_total_employees

我将如何编写一个查询,该查询将为Department中的dept_name提供相关Subdepartment表中员工总数最多的部门,即总sub_dept_total_employees,其中dept_sub_id之间存在关系

我想要Department的dept_name,而不是sub_dept_total_employees总数

谢谢

标签: sql

解决方案


甲骨文

SELECT dept_name
FROM department a
JOIN
  (SELECT dept_sub_id
   FROM subdepartment
   ORDER BY sub_dept_total_employees DESC) b ON a.dept_sub_id = b.dept_sub_id
WHERE b.rownum = 1

其他数据库(检查文档以查看是否row_number()支持)

SELECT dept_name
FROM department a
JOIN
  (SELECT dept_sub_id,
          row_number() over(
                     ORDER BY sub_dept_total_employees DESC) AS rn
   FROM subdepartment) b ON a.dept_sub_id = b.dept_sub_id
WHERE b.rn = 1

推荐阅读