COUNT比我的

时间:2016-11-20 16:30:04

标签: sql-server

我有一个SQL语句

SELECT COUNT(appl.applicantID) 
FROM course_Batch pD 
INNER JOIN applicant appl ON pD.programmeID = appl.programmeID
GROUP BY pD.programmeID

因此,在我的applicant表格中,我有2个申请人与record中的course_Batch相关联。

但是,当我使用上面粘贴的那个SQL语句时,我得到4.因为在我的course_Batch表中,我在1 programme ID下有多个记录。

带有示例数据的

ProgrammeDetail表:

-------------------------------------------
|  programmeID  |   programmeRequirement  |
-------------------------------------------
|     P01       |          20             |
|     P01       |          20             |
-------------------------------------------
带有示例数据的

Applicant表:

-----------------------------------
|   applicantID  |   programmeID  |
-----------------------------------
|    A001        |      P01       |
|    A002        |      P01       |
-----------------------------------

有没有办法实现这个目标?

---------------------------------------------------------------
|  programmeID  |   programmeRequirement  |   applicantCount  |
---------------------------------------------------------------
|   P01         |          20             |         2         |
---------------------------------------------------------------

1 个答案:

答案 0 :(得分:1)

使用INNER JOIN。它会给出您的预期结果

 SELECT
    programmedetail.programmeID,
    programmedetail.programmeRequirement,
    COUNT(
        DISTINCT (applicant.applicantID)
    ) AS applicantCount
FROM
    programmedetail
INNER JOIN applicant ON programmedetail.programmeID = applicant.programmeID
GROUP BY
    programmedetail.programmeID,
    programmedetail.programmeRequirement;

点击以下链接,您可以在实时中看到您想要的预期结果。

SQL Fiddle Demo