我正在学习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;
答案 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;
基本的想法是山姆:你先按平均工资排序,然后选择只保留第一个结果。