Mysql 使用外键关系的SQL查询
我正在学习MySQL,我正在尝试在查询中做简单的算法, 我试图找出平均工资最高的部门,并获得部门名称。 但是我不知道如何使用外键访问Mysql 使用外键关系的SQL查询,mysql,database,foreign-key-relationship,Mysql,Database,Foreign Key Relationship,我正在学习MySQL,我正在尝试在查询中做简单的算法, 我试图找出平均工资最高的部门,并获得部门名称。 但是我不知道如何使用外键访问ProfessorsTable表。 有人能帮我吗?谢谢大家! 这就是我所尝试的: SELECT Department FROM ProfessorsTable WHERE max(AVG(Salary)); 以下是我的两张桌子: CREATE TABLE DepartmentsTable ( Department VARCHAR(50) NOT NUL
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;
为了完成您希望执行的操作,工作流程如下: 您要选择薪资最高的教授的系名。因此,您需要按薪资对教授进行排序,从列表中选择第一位(最高薪资),然后返回他/她的部门 试试这个:
SELECT Department FROM ProfessorsTable ORDER BY Salary DESC LIMIT 1;
编辑:
我误解了原来的问题。以下是获取薪资最高部门的部门名称的方法:
SELECT Department FROM ProfessorsTable GROUP BY Department ORDER BY AVG(salary) DESC LIMIT 1;
基本思想是sam:首先按平均工资排序,然后选择只保留第一个结果。要获得所有部门的平均工资
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;
“你要选择薪水最高的教授的系名。”这不是问题的要求。