sql - SQL:在另一个表中按类型获取一些
问题描述
我对 SQL 很陌生,目前正在尝试调整以处理不同表中的数据。我想检索特定学生积分的单数总和。
(因此,必须将每个“Discipline_Student_ID”的相关“Discipline_Pointsch”添加到我要返回的 SUM 中。(WHERE [特定学生 ID]))。我将如何在我的代码中加入表格以执行我想要实现的目标?
解决方案
假设您还需要Student
表格中的内容(例如他们的名字),您可以这样做:
SELECT s.Student_ID, s.Student_Name, coalesce(SUM(dt.Discipline_Pointsch),0) As Points
FROM Student s
LEFT JOIN Discipline d on d.Student_NWU_ID = s.Student_ID
LEFT JOIN Discipline_Type dt on dt.Discipline_Type_Code = d.Discipline_Type_Code
WHERE s.Student_ID = [specific students ID]
GROUP BY s.Student_ID, s.Student_Name
我选择了 LEFT(外部)联接而不是 INNER 联接,以及合并操作,因此您可以看到没有任何缺点的学生的结果。
您也可以选择简化该GROUP BY
部分,同时使查询结构更复杂一些,如下所示:
SELECT s.*, coalesce(p.Points) Points
FROM Student s
LEFT JOIN (
SELECT Student_NWU_ID, SUM(Discipline_Pointsch) As Points
FROM Discipline d
INNER JOIN Discipline_Type dt on dt.Discipline_Type_Code = d.Discipline_Type_Code
GROUP BY Student_NWU_ID
) p ON p.Student_NWU_ID = s.Student_ID
WHERE s.Student_ID = [specific students ID]
推荐阅读
- excel - 如何在excel中重复一个数字序列
- php - 使用范围的 IP 白名单
- ios - 键盘出现时移动文本字段解决方案不起作用
- flutter - 在颤动中触发通知的最佳方法
- json - 解析期间的 Angular Http 失败
- oracle - 在 oracle plsql 程序中,如果我们的程序具有“Pragma 自治事务”,我们可以使用 out 参数吗?
- google-cloud-automl - 我应该训练一天的 autoML 模型吗?
- javascript - 图片上传功能在 Angular 6 中不起作用
- python - 如何减小 PyCharm 的 content.dat.storageData 缓存的大小?
- c# - 在 Azure 中嵌入控制台应用程序和调度