如何在 SQL 中找到每个主题的平均分?
在 SQL 中,有时我们需要根据表的另一列求一列的平均值,例如求一个班级学生的学科平均分。这涉及使用GROUP BY子句以及AVG等AGGREGATE函数。下面的文章中描述了相同的内容。为此,我们使用以下演示中显示的特定类型的查询。对于本文,我们将使用 Microsoft SQL Server 作为我们的数据库。
第 1 步:创建数据库。为此,请使用以下命令创建一个名为 GeeksForGeeks 的数据库。
询问:
CREATE DATABASE GeeksForGeeks
输出:
第 2 步:使用 GeeksForGeeks 数据库。为此,请使用以下命令。
询问:
USE GeeksForGeeks
输出:
第 3 步:在 GeeksForGeeks 数据库中创建一个 STDMARKS 表。该表有 4 列,即 ROLL_NO、STUDENT_NAME、SUBJECT 和 MARKS,其中包含学生的卷号和姓名以及学生在相应科目中的科目名称和分数。
询问:
CREATE TABLE STDMARKS(
ROLL_NO INT,
STUDENT_NAME VARCHAR(10),
SUBJECT VARCHAR(10),
MARKS INT);
输出:
第 4 步:描述表 STDMARKS 的结构。
询问:
EXEC SP_COLUMNS STDMARKS;
输出:
第 5 步:在 STDMARKS 表中插入 16 行。
询问:
INSERT INTO STDMARKS VALUES(1,'RAVI','C++',75);
INSERT INTO STDMARKS VALUES(1,'RAVI','ORACLE',84);
INSERT INTO STDMARKS VALUES(1,'RAVI','JAVA',95);
INSERT INTO STDMARKS VALUES(1,'RAVI','OS',62);
INSERT INTO STDMARKS VALUES(2,'VIVEK','C++',46);
INSERT INTO STDMARKS VALUES(2,'VIVEK','ORACLE',70);
INSERT INTO STDMARKS VALUES(2,'VIVEK','JAVA',55);
INSERT INTO STDMARKS VALUES(2,'VIVEK','OS',56);
INSERT INTO STDMARKS VALUES(3,'RAJ','C++',82);
INSERT INTO STDMARKS VALUES(3,'RAJ','ORACLE',84);
INSERT INTO STDMARKS VALUES(3,'RAJ','JAVA',74);
INSERT INTO STDMARKS VALUES(3,'RAJ','OS',92);
INSERT INTO STDMARKS VALUES(4,'MAHESH','C++',43);
INSERT INTO STDMARKS VALUES(4,'MAHESH','ORACLE',49);
INSERT INTO STDMARKS VALUES(4,'MAHESH','JAVA',68);
INSERT INTO STDMARKS VALUES(4,'MAHESH','OS',35);
输出:
第 6 步:显示 STDMARKS 表的所有行。
询问:
SELECT * FROM STDMARKS;
输出:
第 7 步:从STDMARKS表中显示SUBJECT和学生在该科目中得分的平均分。为了实现一列根据另一列的聚合值,我们需要使用GROUP BY子句以及聚合函数,例如AVG 。 GROUP BY子句后提到的列是我们输出的基础。以这种方式获得学科平均分。
句法:
SELECT COLUMN_NAME1,AVG(COLUMN_NAME2)
AS ALIAS FROM TABLE_NAME GROUP BY COLUMN_NAME1;
询问:
SELECT SUBJECT,AVG(MARKS) AS "AVERAGE MARKS"
FROM STDMARKS GROUP BY SUBJECT;
输出: