2012-02-08 166 views
0

我有两个表,我需要做一定的选择。如何构建此SQL SELECT查询?

第一个表是雇工有colums 名称 * Departament_ID *和工资 第二个表是Departament有colums Departament ID和* Departament_Name *

我的SQL脚本有拿到我的姓名,最高赛乐最低工资其中Departament_ID是'30'

+3

你试过了什么?他们是基本的查询... – 2012-02-08 14:48:59

回答

0

这样的事情应该可以做到这一点(注意:所有的拼写都与你在第一篇文章中给出的完全相同)。

SELECT d.Department_Name AS name, 
      MAX(e.salary) AS max_salary, 
      MIN(e.salary) AS min_salary 
    FROM Department d 
LEFT JOIN Employe e ON d.Department_ID = e.Department_ID 
    WHERE d.Department_ID = 30 
0
SELECT d.department_name, 
     MIN(e.salary) AS 'Minimum Salary', 
     MAX(e.salary) AS 'Maximum Salary' 
FROM department d,employee e 
WHERE d.department_id=30 AND d.department_id=e.department_id 
GROUP BY d.department_name 
+2

凌乱的连接:P当你这样做的时候显式地加入'JOIN'更明显,而不是隐藏在'FROM'和'WHERE' :) – Joe 2012-02-08 14:52:46

+0

当然,但是左连接是这是一个矫枉过正的问题;) – dgw 2012-02-08 14:55:51

+0

大声笑,这取决于你想如何处理没有雇员的部门,如果你使用明确的'JOIN',你可以通过改变'LEFT'到'INNER'来改变它,这是为你完成的:) – Joe 2012-02-08 14:58:02

0
SELECT max(sal) as MaximumSalary 
     ,min(sal) as MinimumSalary 
     ,department.Departament_Name 
     ,employee.Name 
FROM employee 
INNER JOIN department ON 
      employee.departmentid = department.department_id 
WHERE department.department_id = 31 
GROUP BY department.department_id 

最大值和最小值功能会给你的薪水列的最大和雇员表的最小值。这将要求您使用GROUP BY,因为他们需要计算一组数据中的最大值和最小值,在这种情况下,按部门计算最大值/最小值。我们按部门ID分组,因为它是表格的唯一键。内部联结在这里加入你拥有的两个表。这是一个内部联接,因为我们想让部门进入查询。

0
SELECT d.Department_Name AS name, 
     MAX(e.salary) AS max_salary, 
     MIN(e.salary) AS min_salary 
    FROM Department d 
    Inner JOIN Employee ON d.Department_ID = e.Department_ID 
    WHERE d.Department_ID = 30