gpt4 book ai didi

mysql - mysql中的计数函数是如何工作的?

转载 作者:行者123 更新时间:2023-11-29 02:53:03 24 4
gpt4 key购买 nike

首先,这是作业的一部分,但我试图更清楚地了解查询数据库时 count() 函数的工作原理。

问题是:列出学生的姓名、SSN和修读的类(class)数(相同CourseNumber的类(class)在不同的学期修读的算作不同的类(class))。

我一直在用这个查询:

SELECT S.Name, S.SSN, COUNT(*)
FROM Student S, Enrollment E
WHERE S.SSN = E.SSN
GROUP BY S.SSN

这似乎返回了正确的答案,但我不确定为什么。结果,我似乎无法正确回答下一个问题(假设在不同季度选修的具有相同 CourseNumber 的类(class)被视为一门类(class))。

下面是创建表的命令,因此您可以查看哪个表包含哪些信息:

CREATE TABLE Student(
SSN INT(9),
Name VARCHAR(20),
Major VARCHAR(30),
PRIMARY KEY (SSN)
);

CREATE TABLE Course(
CourseNumber INT(5),
PrerequisiteCourseNumber INT(10),
CourseTitle VARCHAR(10),
NumberUnits INT(2),
PRIMARY KEY (CourseNumber)
);

CREATE TABLE Section(
CourseNumber INT(5),
Quarter VARCHAR(10),
RoomNumber INT(5),
DayTime VARCHAR(20),
PRIMARY KEY (CourseNumber,Quarter),
FOREIGN KEY (CourseNumber) REFERENCES Course(CourseNumber)
);


CREATE TABLE Enrollment(
SSN INT(9),
CourseNumber INT(5),
Quarter VARCHAR(10),
Grade VARCHAR(1),
PRIMARY KEY (SSN,CourseNumber,Quarter),
FOREIGN KEY (SSN) REFERENCES Student(SSN),
FOREIGN KEY (CourseNumber) REFERENCES Course(CourseNumber),
FOREIGN KEY (Quarter) REFERENCES Section(Quarter)
);

有什么建议吗?

最佳答案

您正在做的是使用旧的连接语法(pre ansi 语法),您在其中执行表的交叉连接并使用 where 将其转换为连接。一个等效的查询是这样的。

SELECT S.Name, S.SSN, COUNT(*)
FROM Student S
JOIN Enrollment E ON S.SSN = E.SSN
GROUP BY S.SSN

现在回答你关于伯爵在做什么和其他事情的问题..

COUNT() 返回返回的每一行的计数。GROUP BY 按共同点(即您的 SSN 字段)对所有记录进行分组。因此,如果学生在表格中有 5 个 SSN 行,那么他的计数将为 5。

现在对于您正在寻找类(class)编号的部分..您需要在适当的字段上加入这些表,并为每个季度添加一个字段到您的组中

又名添加到以前的代码..

WHERE E.quarter = whatever_quarter_you_want

如果需要,您可以在此查询中添加更多内容。但如果您想要更完整的答案,请将数据添加到您的问题中。

关于mysql - mysql中的计数函数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33625431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com