SQL唯一的Where和Count
我可能问错了这个问题,这是我问题的一部分,但是: 项目表上的列:SQL唯一的Where和Count,sql,oracle,Sql,Oracle,我可能问错了这个问题,这是我问题的一部分,但是: 项目表上的列: ProjectID, ProjectName, StartDate, EndDate, Coordinator 表中的列: DonationID, DonationAMT, DonationDate, ProjectID 因此,我正试图数一数,看看每个项目已经做出了多少承诺 预期的产出将是: ProjectId, ProjectName, #ofPledges 我可以通过以下方式获得特定计数: SELECT count(Pr
ProjectID, ProjectName, StartDate, EndDate, Coordinator
表中的列:
DonationID, DonationAMT, DonationDate, ProjectID
因此,我正试图数一数,看看每个项目已经做出了多少承诺
预期的产出将是:
ProjectId, ProjectName, #ofPledges
我可以通过以下方式获得特定计数:
SELECT count(ProjectID) FROM Donation_Table where ProjectID = 1;
但是我正在努力让ProjectName显示出来,它来自我的Project_表;显示所有结果时,而不仅仅是特定的ProjectID。我想看看我所有的项目,所有的项目名称,然后计算每个项目收到了多少捐款。是否可以一次显示所有这些内容
提前谢谢 您需要的是加入和分组:
SELECT P.ProjectID, P.ProjectName, Count(DonationID)
FROM Project_Table P
JOIN Donation_Table D ON P.ProjectID = D.ProjectID
GROUP BY P.ProjectID, P.ProjectName
这是一个简单的东西,可能是一个基本的技能,需要一个关于stackoverflow的问题。我建议阅读关于如何使用SQL的书籍或文章——任何一本像样的书或文章都会在前几章介绍这一点
注意:如果您希望看到零捐赠项目,则需要左连接:
SELECT P.ProjectID, P.ProjectName, Count(DonationID)
FROM Project_Table P
LEFT JOIN Donation_Table D ON P.ProjectID = D.ProjectID
GROUP BY P.ProjectID, P.ProjectName
首先确定每个项目的捐赠数量:
SELECT ProjectID, count(*)
FROM Donation_Table
GROUP BY ProjectID
结果是一个新表,您可以将其与项目表联接:
SELECT p.*, x.cnt
FROM Project_Table p
JOIN (
SELECT ProjectID, count(*) as cnt
FROM Donation_Table
GROUP BY ProjectID
) X
ON X.ProjectID = p.ProjectID
我认为您应该有一个
左连接
来获取所有项目。@GordonLinoff-True这将不会有具有0捐赠的项目。我遇到的问题是,我的左连接没有使用GROUP BY。我感到非常沮丧,这帮了我很大的忙。非常感谢。我一直在阅读SQL,其中一些手册让我感到非常困惑,这就是为什么我最终在这里提问的原因。