create table t_user(
t_id integer primary key,
t_name varchar2(12),
t_birthday date,
t_age integer
);
create table t_dept(
t_id integer primary key,
t_dname varchar2(12),
t_dno varchar2(12)
);
create table t_employee(
t_id integer primary key,
t_name varchar2(12),
t_birthday date,
t_email varchar2(56),
t_salary number(12,2),
d_id integer references t_dept(t_id)
);
insert into t_dept(t_id,t_dname,t_dno) values (1,'dev','001');
insert into t_dept(t_id,t_dname,t_dno) values (2,'train','002');
insert into t_dept(t_id,t_dname,t_dno) values (3,'market','003');
insert into t_dept(t_id,t_dname,t_dno) values (4,'game','004');
insert into t_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)
values (1,'bobs',to_date('2012-1-11','yyyy-mm-dd'),'bobs@b',100.0,1);
insert into t_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)
values (2,'scott',to_date('2010-10-11','yyyy-mm-dd'),'scott@b',300.0,1);
insert into t_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)
values (3,'tiger',to_date('2008-2-11','yyyy-mm-dd'),'tiger@b',400.0,2);
insert into t_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)
values (4,'lucy',to_date('2009-3-11','yyyy-mm-dd'),'lucy@b',600.0,2);
insert into t_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)
values (5,'lily',to_date('2012-4-11','yyyy-mm-dd'),'lily@b',1000.0,3);
insert into t_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)
values (6,'tom',to_date('2001-10-11','yyyy-mm-dd'),'tom@b',700.0,3);
insert into t_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)
values (7,'black',to_date('2001-10-11','yyyy-mm-dd'),'black@b',200.0,null);
commit;
--------------------------------------------------------------------
----上面是需要使用的数据-----
--找出平均工资大于300的部门的平均工资的最高工资
--问题:下面是我做得,但是不是想要的结果,求解~~~~
select max(aaa.avg_sal),aaa.avg_name from(
select avg(e.t_salary) as avg_sal,d.t_dname as avg_name,d.t_dno
from t_dept d inner join t_employee e on e.d_id=d.t_id group by d.t_dname,d.t_dno having avg(e.t_salary)>300) aaa
group by aaa.avg_name
分享到:
相关推荐
这里的`GROUP BY`子句用于按部门分组,而`HAVING`子句则用于过滤出平均工资大于2500的部门。 #### 8. 查找在平均工资大于2500的部门工作的员工 这个问题可以通过嵌套查询(子查询)的方式来解决。首先找到平均工资...
根据提供的文件信息,我们...此查询使用嵌套查询的方式找出工资高于所在部门平均工资的员工。 通过以上知识点的总结和解释,我们可以更深入地理解MySQL在实际应用中的操作方式以及如何高效地利用SQL语句解决具体问题。
1. **查询部门及其平均工资、最低工资和最高工资**:需要用到`SELECT`、`GROUP BY`和聚合函数`AVG()`、`MIN()`、`MAX()`,可能涉及到`DEPARTMENTS`和`EMPLOYEES`两个表的联接。 2. **查找薪金高于特定员工的员工...
- `MAX()`:找出最大值,如`SELECT MAX(AVG(SAL)) "部门平均工资最大值", DEPTNO "部门编号" FROM EMP GROUP BY DEPTNO`。但要注意,直接在WHERE子句中使用聚合函数会导致错误,因为普通字段和多行函数不能同时出现...
3. 查询工资大于5000的员工及其所属部门: 首先找出工资超过5000的员工对应的`dept_id`,然后使用这些部门ID在外查询中筛选`dept`表,得到部门信息。这里演示了子查询和外查询的结合使用,以及`IN`操作符的应用。 ...
使用LEFT JOIN和WHERE子句来找出受雇日期早于其直接上级的员工。 3. **列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门** ```sql SELECT D.DEPTNO, D.DNAME, E.* FROM DEPT D LEFT JOIN EMP E ON D....
老总可能想要找出平均工资高于最低平均工资的所有职位。 - 示例查询: - 子查询计算所有职位的平均工资。 - 主查询找出平均工资高于最低平均工资的职位。 - 这种类型的查询对于数据分析非常有用。 #### 六、FROM...
4. 找出部门10中的经理,部门20的办事员,以及既不是经理也不是办事员但薪水大于等于2000的员工。这个问题使用了OR条件和NOT IN条件,结合部门号和职位进行筛选,确保满足所有条件的员工被正确地选出来。 5. 展示了...
此查询用于找出员工数量超过1人的所有部门。`GROUP BY`子句按照`deptno`进行分组,而`HAVING COUNT(empno) > 1`则确保只返回那些满足特定条件(即员工数量大于1)的分组结果。 #### 1.2 多表连接查询部门员工数量...
查询(1)要求找出工资高于所在部门平均工资的职工,使用了嵌套查询,`SELECT AVG(wage)`计算平均工资,`WHERE x.dptno=y.dptno`确保比较的是相同部门。查询(2)要求找出工资高于"张三"的职工,直接比较`wage`字段...
**解析**: 通过子查询找出部门30中的最高薪金,并筛选出薪金高于该值的员工。 #### 13. 列出在每个部门工作的员工数量、平均工资和平均服务期限 - **知识点**: 使用GROUP BY分组统计数据。 ```sql SELECT deptno...
题目要求找出上过“db”课程的学生数量、成绩最高的学生编号以及每门课成绩大于90分的人数。 **知识点:** - **子查询** 用于从其他表中获取数据。 - **COUNT()** 函数用于计数。 **SQL代码示例:** ```sql -- 上...
1. **找出工资高于公司平均工资的员工**: ```sql SELECT sal FROM emp WHERE sal > (SELECT AVG(sal) FROM emp); ``` - **解析**:此查询通过子查询计算所有员工的平均工资,然后找出工资高于这个平均值的...
- **绩效评估**:计算部门内达到一定销售目标且满意度评分高于平均值的员工的平均工资。 - **教育数据分析**:找出某科目在特定年级和班级中平均成绩。 - **市场研究**:计算某个地区、特定年龄段用户购买产品的平均...
同样,如果我们需要找出某个仓库中工资最高的职工,可以结合`MAX`函数和`GROUP BY`语句: ```sql SELECT 仓库号, MAX(工资) AS 最高工资 FROM 职工 GROUP BY 仓库号 ``` 总的来说,SQL复杂查询通过联接、嵌套和...
以上两种方法都可以有效地找出工资高于部门平均工资的员工。第一种方法使用了嵌套查询,而第二种方法则使用了JOIN操作,两者都能达到同样的效果。 通过上述示例,我们可以看到,在实际工作中,根据具体需求选择合适...
需要对员工表按工作进行分组,并找出每个工作岗位中薪金最低但大于1500的记录。 8. 列出在部门“SALES”(销售部)工作的员工的姓名: 需要通过部门名称来找到销售部的部门编号,然后在员工表中筛选出在该部门...
或者,找出至少有两个职工且平均工资大于15000的仓库: ```sql SELECT 仓库号, AVG(工资) FROM 职工表 GROUP BY 仓库号 HAVING COUNT(职工号) >= 2 AND AVG(工资) > 15000 ``` 以上就是SQL数据查询的一些基本功能和...
- 使用分组函数计算每个部门的员工数量、平均工资和平均服务期限。 13. **列出所有员工的姓名、部门名称和工资**: - `SELECT e.ename, d.dname, e.sal FROM emp e INNER JOIN dept d ON e.deptno = d.deptno;` ...
- 第二步:使用第一步的结果作为子查询,找出所有薪资高于“SMITH”的员工。 SQL语句示例: ```sql -- 第一步 SELECT sal FROM emp WHERE ename = 'SMITH'; -- 第二步 SELECT * FROM emp WHERE sal > (SELECT sal ...