选择多个项目形成具有最小值和最大值的多个表

selecting multiple items form multiple tables with min and max

我在理解这个 SQL 语句时遇到了一些困难。我有三个 tables employeejobjob type.

job type 是参考 table。它包含工作的名称、该工作需要多长时间以及该工作的收费标准。

job 记录了哪个员工为哪个客户执行了什么工作以及执行日期。它链接到 job type jobname.

employee 有员工姓名,employee id。它通过 employee id.

链接到 job table

我需要显示所有员工的列表以及他们在给定年份所做的最便宜和最昂贵的工作。

我想我可能需要嵌入一个 select 和几个 joins。也许 union 复杂性与我的经验相去甚远。我什至不知道该说实话。

您应该在查询中使用 employee table 作为主要 table,这样即使该员工与 0 个职位相关联,您也会为每个员工获取一行。然后使用外连接到 jobjob_type tables,按员工标识符分组,并在作业上使用 min()max() 聚合函数 table 到 select 最小和最大作业成本(如果有)。

像这样的内容应该可以帮助您入门:

select employee.employee_id ,
  employee.employee_name, 
  min(job_type.cost),
  max(job_type.cost)
from employee 
  left outer join job on job.employee_id = employee.employee_id
  left outer join job_type on job_type.job_type_id = job.job_type_id
group by employee.employee_id, 
  employee.employee_name