SQL计数查询未返回正确的结果

时间:2010-10-21 10:00:26

标签: sql count inner-join

努力争取工作...... ..

我有两张桌子: -

tbl.candidates:

candidate_id agency_business_unit_id

tbl.candidate_employment_tracker

candidate_id

候选人就业可以有一个candidate_id的重复记录,因为它包含不同客户的工作历史记录。

候选人表格对每位候选人都是唯一的。

我正在尝试获取将按agency_business_unit_id分组的结果,并计算候选_employment_tracker中存在的候选人数量。

E.g。

Agency Business Unit Id    |    Candidates
------------------------------------------------------------
100                    |    2
987                    |    1
12                     |    90

我正在处理的查询似乎没有起作用,因为我在candidate_employment_tracker中得到了候选人的数量。

SELECT 
    abu.agency_business_unit_id,
    abu.agency_business_unit_name,
    count(c.candidate_id) AS candidateCount
FROM candidate_employment_tracker cet
INNER JOIN candidate c ON c.candidate_id = cet.candidate_id
INNER JOIN agency_business_unit abu ON abu.agency_business_unit_id = c.agency_business_unit_id
WHERE c.candidate_ni_number NOT REGEXP '^[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z] ?[0-9]{2} ?[0-9]{2} ?[0-9]{2} ?[ABCD]$'
GROUP BY abu.agency_business_unit_id
ORDER BY abu.agency_business_unit_name ASC

我尝试了几种方法,结果不一致。例如,我知道其中一个代理业务单位只有1名候选人,但结果是2.这是由于这位特定候选人在候选人就业跟踪表中有2条记录。我会继续抨击,但任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:3)

你需要

count(DISTINCT c.candidate_id) 

这将避免重复计算,即候选人在候选人就业跟踪表中有2条记录。

答案 1 :(得分:0)

嗯,这似乎不起作用我现在进一步研究结果。当我比较代理业务部门的候选人时,我的计数数字不一致。