SQL Query使用外键关系

时间:2013-05-11 23:19:00

标签: mysql database foreign-key-relationship

我正在学习MySQL,我正在尝试在查询中进行简单的算术运算, 我正在努力确定薪资平均值最高的部门并获得部门名称。 但我不知道如何使用外键访问ProfessorsTable表。 任何人都可以帮助我吗?谢谢!

这就是我试过的:

 SELECT Department FROM ProfessorsTable WHERE max(AVG(Salary));

以下是我的两张表:

 CREATE TABLE DepartmentsTable
 (
   Department VARCHAR(50) NOT NULL,
   Faculty VARCHAR(50) NOT NULL,
   Building VARCHAR(50) NOT NULL,
   CONSTRAINT PRIMARY KEY (Department)
 ) type = InnoDB;

 CREATE TABLE ProfessorsTable
 (
   Name VARCHAR(50) NOT NULL,
   Department VARCHAR(50) NOT NULL,
   Rank VARCHAR(50) NOT NULL,
   Salary INT UNSIGNED NOT NULL,
   CONSTRAINT FOREIGN KEY (Department) REFERENCES DepartmentsTable(Department), 
   CONSTRAINT PRIMARY KEY (Name, Department)
 ) type = innoDB;

2 个答案:

答案 0 :(得分:2)

获得所有部门的平均工资。 。

SELECT Department, avg(Salary) AS avg_salary
FROM ProfessorsTable 
GROUP BY Department
ORDER BY avg_salary DESC;

只获得平均成绩最高的部门。 。

SELECT Department, avg(Salary) AS avg_salary
FROM ProfessorsTable 
GROUP BY Department
ORDER BY avg_salary DESC LIMIT 1;

答案 1 :(得分:1)

为了做你想做的事,工作流程如下:

您想要选择薪水最高的教授的部门名称。因此,您希望按薪水对教授进行排序,选择列表中的第一位(最高薪水),然后返回他/她的部门。

试试这个:

SELECT Department FROM ProfessorsTable ORDER BY Salary DESC LIMIT 1;

编辑:

我误读了原来的问题。以下是获得薪水最高的部门部门名称的方法:

SELECT Department FROM ProfessorsTable GROUP BY Department ORDER BY AVG(salary) DESC LIMIT 1;

基本的想法是山姆:你先按平均工资排序,然后选择只保留第一个结果。