【发布时间】:2020-09-19 17:56:48
【问题描述】:
我有这个架构:
-
Students(sid: int, firstName: str, lastName: str, yearStarted: int) -
Majors(sid: int, major: str)
注意:一个学生可能拥有多个专业。 -
Grades(sid:int,cid:int,学分:int,等级:int)
注:sid,cid=外键,等级:A=4,B=3,C=2,D=1,F=0。 -
Courses(cid:int,编号:int,教授:str,专业:str,年份:int,学期:str) 注意: cid 在学期中是唯一的。学期是夏季、秋季或春季。如果两个课程的编号和专业相同,则它们是相同的
使用此架构,我需要“提供 SQL 查询,该查询将生成每个学生的名字、姓氏、yearStarted 和总学分。你不应该考虑成绩为 0 的课程,因为这些对应失败的课程”
到目前为止,我有这个:
def q4(self):
query = '''
select s.firstName, s.lastName, s.yearStarted,count(*)
from students s, grades g
where s.sid = g.sid
and g.grade >0
group by s.firstName, s.lastName, s.yearStarted
'''
self.cur.execute(query)
all_rows = self.cur.fetchall()
return all_rows
并返回这些值:
[('安妮', '布朗', 2020, 1), (“杰克”、“汤姆森”,2018 年,第 3 期), (“雅各布”,“麦卡锡”,2020 年,2), (“贾马尔”、“琼斯”,2019 年,第 3 期), ('简','Doe',2017,2), (“约翰”,“Doe”,2017 年,3), ('蒂姆','伯顿',2018,3), (“蒂娜”,“吉利根”,2019,3)]
但显然这些是错误的,当我上传到 Gradescope 时,它给了我这些错误,位于所附图片
任何想法我做错了什么?
【问题讨论】:
-
您选择不是否有理由使用正确、明确、标准、可读的
JOIN语法? -
在我看来,你有所有的学生,但你有不同的顺序,练习是否指定了学生的顺序?
-
@GordonLinoff 不,没有。我已经使用了基于 sid 的内部连接,结果出现了正常的错误。
-
@GordonLinoff 这显然是个学生,也许要调低一点?
-
不,必须不同的不是
GROUP BY,而是ORDER BY。奇怪的是,他们没有在描述中说出他们想要的顺序,而是告诉你你的结果不匹配,只是因为它的顺序与他们预期的不同。
标签: python sql multiple-columns