首页 > 解决方案 > SQL sum 聚合函数的问题

问题描述

我正在尝试对具有 3 个表的数据库运行查询:COURSE、SECTION、ENROLL。

他们是这样创造的:

create table COURSE
(
    Cno     varchar(9) primary key, 
    Cname   varchar(50),
    Credit  int check (Credit > 0)
);

create table SECTION
(
    Cno     varchar(9) REFERENCES COURSE(cno),
    Sno     varchar(9),
    Semester    varchar(15) check(Semester in('Fall','Spring','Summer')), 
    Year    int, 
    Sid     varchar(9) primary key 
);

create table ENROLL
(
    Mno     varchar(9) REFERENCES STUDENT(Mno),
    Sid     varchar(9) REFERENCES SECTION(Sid),
    Grade   CHAR check(Grade in('A','B','C','D','F')),
    primary key(Mno,Sid)
);

我正在尝试对SUM学生注册的课程的所有学分进行计算。这就是我尝试完成此操作的方式:

select 
    SUM(select Credit 
        from COURSE c 
        where c.Cno = (select s.Cno 
                       from SECTION s 
                       where s.Sid = (select Sid 
                                      from ENROLL 
                                      where Mno = @mNum));

但是我在 Visual Studio 中遇到一个错误,上面写着

'select' 附近的语法不正确(第二个 select 语句)

这是什么错误?任何帮助将不胜感激。

标签: sqlsumaggregate-functions

解决方案


看看它是否有效:

select sum(Credit) from COURSE c where c.Cno in 
(select s.Cno from SECTION s where s.Sid in (select Sid from ENROLL where Mno = @mNum)) 
group by c.Cno;

推荐阅读