SQL按学号查询每人的各科总成绩,感激不尽

2025年03月01日 13:52
有3个网友回答
网友(1):

CREATE TABLE STU_INFO  (
  XH  INT,
  XM  varchar(6)
);

CREATE TABLE XK (
  XH  INT,
  KCH  varchar(6),
  KSCJ  INT,
  KKNY  varchar(6)
);
GO


INSERT INTO STU_INFO VALUES( 1,  '张三');
INSERT INTO STU_INFO VALUES( 2,  '李四');
INSERT INTO STU_INFO VALUES( 3,  '王五');
INSERT INTO STU_INFO VALUES( 4,  '赵六');

INSERT INTO XK VALUES(1,  '大英',  90,  '20011');
INSERT INTO XK VALUES(2,  '大英',  80,  '20011');
INSERT INTO XK VALUES(3,  '大英',  70,  '20011');
INSERT INTO XK VALUES(4,  '大英',  60,  '20011');

INSERT INTO XK VALUES(1,  '高数',  80,  '20011');
INSERT INTO XK VALUES(2,  '高数',  70,  '20011');
INSERT INTO XK VALUES(3,  '高数',  60,  '20011');

INSERT INTO XK VALUES(1,  '物理',  70,  '20011');
INSERT INTO XK VALUES(2,  '物理',  60,  '20011');

go


SELECT
  STU_INFO.XH,
  STU_INFO.XM,
  COUNT( XK.KCH ) AS  考试课程总数,
  SUM( XK.KSCJ )  AS  考试总成绩,
  AVG( XK.KSCJ )  AS  考试平均分
FROM
  STU_INFO  JOIN  XK  ON  (STU_INFO.XH  = XK.XH)
WHERE
  KKNY = '20011'
GROUP BY
  STU_INFO.XH,
  STU_INFO.XM;

go


XH          XM     考试课程总数      考试总成绩       考试平均分
----------- ------ ----------- ----------- -----------
          1 张三               3         240          80
          2 李四               3         210          70
          3 王五               2         130          65
          4 赵六               1          60          60

(4 行受影响)

网友(2):

SELECT A.XH,A.XM,SUM(B.KSCJ) AS ZF,AVG(B.KSCJ) AS PJF
FROM STU_INFO A,XK B
WHERE A.XH=B.XH
AND B.KKNY='20011'
GROUP BY A.XH,A.XM

网友(3):

select a.* ,
(select sum(a.kscj) from xk b where a.xh = b.xh and b.kkny = '20011'),
(select avg(a.kscj) from xk b where a.xh = b.xh and b.kkny = '20011')
from stu_info a