CREATE TABLE emp( empno INT COMMENT员工号ename VARCHAR(20) COMMENT员工名 job VARCHAR(30) COMMENT 工作hiredate DATE COMMENT强入职日期 salary NUMERIC(7,2) COMMENT薪资 deptno INT COMMENT部门号 外键,PRIMARY KEY(empno) CREATE TABLE dept( deptno int COMMENT 部门号 dname VARCHAR(30) COMMENT部门名称 PRIMARY KEY(deptno) INSERT INTO dept (deptno, dname) VALUES (1,管理部) INSERT INTO dept (deptno, dname) VALUES (2,财务部) INSERT INTO dept (deptno, dname) VALUES (3,教学部); INSERT INTO emp (empno, ename, job, hiredate, salary, deptno) VALUES (1, 'Bob','CEO'"1995-08-06',1,1);INSERT INTO emp (empno, ename, job, hiredate, salary, deptno) VALUES (2, Tom',总监"997-07-07'1200,1);INSERT INTO emp (empno, ename, job, hiredate, salary, deptno) VALUES (3, Jerry总监',2018-05-07',2200,2): a.列出所有员工的姓名、部门名称和工资 b.列出薪资比“Tom”多的所有员工 c.列出至少有一个员工的所有部门 d.列出在每个部门工作的员工数量、平均工资 e.列出都门名称及各部门的人数
时间: 2023-12-29 17:02:59 浏览: 95
我明白了,下面是答案:
a. SELECT e.ename, d.dname, e.salary FROM emp e INNER JOIN dept d ON e.deptno = d.deptno;
b. SELECT e.ename, e.salary FROM emp e INNER JOIN emp t ON e.salary > t.salary AND t.ename = 'Tom';
c. SELECT DISTINCT d.dname FROM dept d INNER JOIN emp e ON e.deptno = d.deptno;
d. SELECT d.dname, COUNT(*), AVG(e.salary) FROM dept d INNER JOIN emp e ON e.deptno = d.deptno GROUP BY d.dname;
e. SELECT d.dname, COUNT(e.empno) FROM dept d LEFT OUTER JOIN emp e ON e.deptno = d.deptno GROUP BY d.dname;
注意,以上所有SQL语句都只是参考答案,如果有语法错误或者其他问题,请自行修改。
相关问题
0-11 查询工资大于6000并属于20或者30号部门的员工编号、员工姓名、员工工资、部门编号、部门名称。 分数 3 作者 张爽 单位 广东东软学院 从emp表和dept表中查询工资大于6000并属于20或者30号部门的员工编号、员工姓名、员工工资、部门编号、部门名称。 表结构: 请在这里写定义表结构的SQL语句。例如: CREATE TABLE emp ( empno INT(4) PRIMARY KEY COMMENT'员工编号', ename VARCHAR(10) NOT NULL COMMENT'员工姓名', job VARCHAR(10) COMMENT'员工岗位', hiredate DATE COMMENT'入职日期', sal DECIMAL(7,2) COMMENT'工资', deptno INT(2) NOT NULL COMMENT'部门编号' ) ; CREATE TABLE dept ( deptno INT(2) PRIMARY KEY COMMENT'部门编号', dname VARCHAR(10) NOT NULL COMMENT'部门名称', dloc VARCHAR(10) NOT NULL COMMENT'部门地点' ) ;
根据题目描述,可以使用如下的 SQL 语句进行查询:
```sql
SELECT emp.empno, emp.ename, emp.sal, dept.deptno, dept.dname
FROM emp
JOIN dept ON emp.deptno = dept.deptno
WHERE emp.sal > 6000 AND (dept.deptno = 20 OR dept.deptno = 30);
```
其中,`JOIN` 表示连接两个表,`emp` 和 `dept` 是两个表的名称,`empno`、`ename` 和 `sal` 是 `emp` 表中的列名,`deptno` 和 `dname` 是 `dept` 表中的列名。`WHERE` 表示筛选条件,`emp.sal > 6000` 表示工资大于 6000,`(dept.deptno = 20 OR dept.deptno = 30)` 表示部门编号是 20 或者 30。这条 SQL 语句将会返回符合条件的员工编号(`empno`)、员工姓名(`ename`)、员工工资(`sal`)、部门编号(`deptno`)以及部门名称(`dname`)。
假设在上述基础上于mydb数据库中又添加了emp表并已添加数据,请结合dept表和如下给出的emp表信息写出下列查询语句。 (2)查询员工表emp中每个岗位工作对应的最低工资,要求查询结果包括岗位名称和对应的最低工资。 表结构: CREATE TABLE emp ( empno INT(4) PRIMARY KEY COMMENT'员工编号', ename VARCHAR(10) NOT NULL COMMENT'员工姓名', job VARCHAR(10) COMMENT'员工岗位', hiredate DATE COMMENT'入职日期', sal DECIMAL(7,2) COMMENT'工资', deptno INT(2) NOT NULL COMMENT'部门编号' ) ;
请看下面的SQL语句,可以实现查询员工表emp中每个岗位工作对应的最低工资:
```
SELECT job, MIN(sal) AS min_salary
FROM emp
GROUP BY job;
```
这个查询语句会将emp表按照岗位名称(job)进行分组,然后使用MIN函数计算每个岗位对应的最低工资(min_salary)。最后,查询结果中会包括岗位名称和对应的最低工资。
阅读全文