员工数据库的 SQL 查询

标签 sql

我是 SQL 的新手,这学期我正在上数据库类(class)。我有大约 20 个查询要在这个数据库上尝试,其中有两个我无法弄清楚...我想知道这里是否有人能够提供帮助!

这是我已经创建的表格。

create table employee(
  EID varchar(20) primary key,
  Lastname varchar(20),
  Firstname varchar(20),
  Midinitial char(1),
  gender char(1),
  street varchar(20),
  city varchar(20)
);

create table works(
  EID varchar(20) primary key,
  Lastname varchar(20),
  Firstname varchar(20),
  Midinitial char(1),
  company_name varchar(20),
  salary numeric(5,0),
  foreign key(EID) references employee,
  foreign key(company_name) references company
);

create table company(
  company_name varchar(20) primary key,
  city varchar(20)
);

create table manages(
  EID varchar(20) primary key,
  Lastname varchar(20),
  Firstname varchar(20),
  Midinitial char(1),
  ManagerLastname varchar(20),
  MFirstname varchar(20),
  MMidinitial varchar(20),
  start_date date,
  foreign key (EID) references employee
);

找出为第一银行工作并住在奥马哈的所有经理的薪水。

这是我对这个的看法,我认为它是正确的,但我不想回答这个问题,直到我也能得到第二个......

select distinct salary
from employee, works, manages
where employee.city = 'Omaha' 
  and works.company_name = 'First Bank' 
  and manages.managerlastname = employee.Lastname
  and employee.EID = works.EID

找出所有员工中工资最高的员工的姓名和公司名称。

最佳答案

我很确定它应该是:

SELECT w.salary FROM works w INNER JOIN employee e ON w.EID = e.EID
 WHERE e.city = 'Omaha' AND w.company_name = 'First Bank' AND EXISTS
 ( SELECT * FROM managers m WHERE m.EID = w.EID);

第二个:

SELECT e.Firstname, e.Lastname, w.company_name FROM employee e INNER JOIN
  works w ON e.EID = w.EID ORDER BY w.salary DESC LIMIT 1;

关于员工数据库的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12362367/

相关文章:

sql - hive 检查下一行

java - JOOQ 的插入...与 PostgreSQL 10 和 JOOQ 3.10 一起返回?

sql - WHERE 子句中的 "Conditional Conditions"(应用哪个条件取决于 "mode"标志)

sql - 查找序列中未缺失的列中的上一个数字

sql - ORA-00907: 缺少右括号

mysql - 加入操作重复

sql - SSIS 新手 - 执行 SQL 任务导出到 CSV - 数据查看器中没有结果

php - 使用 LIKE 函数查询日期的 MYSQL 查询

mysql - 同一个变量下的两个数据库变化

mysql - 将变量插入 SQL 语句