📅  最后修改于: 2023-12-03 15:12:43.271000             🧑  作者: Mango
门| GATE-CS-2016(套装1)|第 54 题
这道题目出自 2016 年 GATE 计算机科学专业的考试,考察了程序员关于数据库操作方面的知识。
这道题目主要考察了以下几点:
对于熟悉 SQL 语言和数据库基础知识的程序员来说,这道题目并不难,但需要认真审题和分析,结合题目中给出的条件进行查询操作,最后返回正确结果。
以下为该题的 SQL 查询语句:
SELECT COUNT(*)
FROM (SELECT D.Dname, COUNT(*)
FROM Dept D JOIN Emp E ON D.Deptno = E.Deptno
GROUP BY D.Dname
HAVING AVG(Sal)>(SELECT AVG(Sal) FROM Emp)
)
这里使用了复合查询语句,对 EMP 和 DEPT 两个表进行联接操作,并对查询结果进行计数操作。具体来说,我们先对 DEPT 表和 EMP 表进行内连接操作,然后通过 GROUP BY 子句对 DEPT 表中的 Dname 字段进行分组,统计每个部门员工的数量。接着,使用 HAVING 子句对平均工资进行筛选,筛选出平均工资高于所有员工平均工资的部门。最后,使用外层 SELECT 子句对复合查询结果进行计数,得到所需结果。
代码片段:
SELECT COUNT(*)
FROM (SELECT D.Dname, COUNT(*)
FROM Dept D JOIN Emp E ON D.Deptno = E.Deptno
GROUP BY D.Dname
HAVING AVG(Sal)>(SELECT AVG(Sal) FROM Emp)
)
返回的 markdown 格式如下:
# 题目
门| GATE-CS-2016(套装1)|第 54 题
# 介绍
这道题目出自 2016 年 GATE 计算机科学专业的考试,考察了程序员关于数据库操作方面的知识。
这道题目主要考察了以下几点:
- 复合查询的使用
- 查询结果的排序和过滤
- 对列进行计数和分组统计的处理
- 数据库间的连接和联接操作
对于熟悉 SQL 语言和数据库基础知识的程序员来说,这道题目并不难,但需要认真审题和分析,结合题目中给出的条件进行查询操作,最后返回正确结果。
以下为该题的 SQL 查询语句:
```sql
SELECT COUNT(*)
FROM (SELECT D.Dname, COUNT(*)
FROM Dept D JOIN Emp E ON D.Deptno = E.Deptno
GROUP BY D.Dname
HAVING AVG(Sal)>(SELECT AVG(Sal) FROM Emp)
)
这里使用了复合查询语句,对 EMP 和 DEPT 两个表进行联接操作,并对查询结果进行计数操作。具体来说,我们先对 DEPT 表和 EMP 表进行内连接操作,然后通过 GROUP BY 子句对 DEPT 表中的 Dname 字段进行分组,统计每个部门员工的数量。接着,使用 HAVING 子句对平均工资进行筛选,筛选出平均工资高于所有员工平均工资的部门。最后,使用外层 SELECT 子句对复合查询结果进行计数,得到所需结果。
代码片段:
SELECT COUNT(*)
FROM (SELECT D.Dname, COUNT(*)
FROM Dept D JOIN Emp E ON D.Deptno = E.Deptno
GROUP BY D.Dname
HAVING AVG(Sal)>(SELECT AVG(Sal) FROM Emp)
)