在 SQL Server 中显示平均工资最高的部门名称
在 SQL 中,我们需要从包含员工信息的给定表中找出部门信息。其中一项数据是在该部门工作的员工平均工资最高的部门的名称。我们将使用TOP 、 AVG 、 ORDER BY 、 AS 、 GROUP BY和DESC子句来实现这一点。如下图所示。对于本文,我们将使用 Microsoft SQL Server 作为我们的数据库。
第 1 步:创建数据库。为此,请使用以下命令创建一个名为 GeeksForGeeks 的数据库。
询问:
CREATE DATABASE GeeksForGeeks
输出:
第 2 步:使用 GeeksForGeeks 数据库。为此,请使用以下命令。
询问:
USE GeeksForGeeks
输出:
第 3 步:在 GeeksForGeeks 数据库中创建一个表 COMPANY。该表有 4 列,即 EMPLOYEE_ID、EMPLOYEE_NAME、DEPARTMENT_NAME 和 SALARY,分别包含各个员工的 id、姓名、部门和工资。
询问:
CREATE TABLE COMPANY(
EMPLOYEE_ID INT PRIMARY KEY,
EMPLOYEE_NAME VARCHAR(10),
DEPARTMENT_NAME VARCHAR(10),
SALARY INT);
输出:
第 4 步:描述表 COMPANY 的结构。
询问:
EXEC SP_COLUMNS COMPANY;
输出:
第 5 步:在 COMPANY 表中插入 5 行。
询问:
INSERT INTO COMPANY VALUES(1,'RAM','HR',10000);
INSERT INTO COMPANY VALUES(2,'AMRIT','MRKT',20000);
INSERT INTO COMPANY VALUES(3,'RAVI','HR',30000);
INSERT INTO COMPANY VALUES(4,'NITIN','MRKT',40000);
INSERT INTO COMPANY VALUES(5,'VARUN','IT',50000);
输出:
第 6 步:显示 COMPANY 表的所有行。
询问:
SELECT * FROM COMPANY;
输出:
第七步:显示该部门员工平均工资最高的部门名称。我们将在这里使用聚合函数AVG来计算每个部门的平均(平均)工资。部门平均值是在GROUP BY子句的帮助下获得的,该子句将特定部门的所有薪水组合在一起,然后计算平均值。然后使用ORDER BY和DESC子句按降序对这些平均值进行排序。然后使用TOP子句选择最上面的行1 。这里的 1 表示查询只返回 1 行。我们还使用创建别名的AS子句将部门级薪水的新列命名为MAX_AVG_SALARY 。
句法:
SELECT TOP 1 COLUMN1, AVG(COLUMN2) AS ALIAS
FROM TABLE_NAME
GROUP BY COLUMN1
ORDER BY AVG(COLUMN2) DESC;
询问:
SELECT TOP 1 DEPARTMENT_NAME, AVG(SALARY) AS MAX_AVG_SALARY
FROM COMPANY
GROUP BY DEPARTMENT_NAME
ORDER BY AVG(SALARY) DESC;
注意:此查询仅返回 1 行,即返回的已排序行中的最顶行。
输出: