📜  门| GATE-CS-2016(套装1)|第 54 题(1)

📅  最后修改于: 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) 
     )