mysql - 查询中的 Count、SUM、LEFT JOIN 和 GROUP BY 无法正常工作

标签 mysql count group-by sum left-join

我尝试了一些方法,但似乎无法找出导致问题的原因。 当我删除 TotalHours 部分时,查询工作正常。但有了它,它会显示正确的小时数,但显示错误的职位、选定的和获胜者的数量。

有人可以告诉我我做错了什么吗?

提前致谢。

这是我的查询;

SELECT 

    crmCandidate.candidateID, 
    crmCandidate.candidateName, 

    COUNT(DISTINCT crmJoin.joinID) AS Jobs, 

    SUM(IF(crmJoin.joinExtra = 'select', 1, 0)) AS Selected, 
    SUM(IF(crmJoin.joinExtra = 'winner', 1, 0)) AS Winner, 

    ROUND(SUM(crmDays.total)) AS totalDays 

FROM crmCandidate 
LEFT JOIN crmJoin ON (crmJoin.joinChild = crmCandidate.candidateID) 
LEFT JOIN crmJob ON (crmJob.jobID = crmJoin.joinParent) 
LEFT JOIN crmDays ON (crmDays.dayCandidateID = crmJoin.joinChild) 

WHERE 

    crmDays.dayJobID = crmJob.jobID AND 
    crmDays.dayCandidateID = crmCandidate.candidateID 

GROUP BY 
    crmCandidate.candidateID 

ORDER BY DESC 

LIMIT 100

最佳答案

试试这个:

SELECT 
    crmCandidate.candidateID, 
    crmCandidate.candidateName, 
    COUNT(DISTINCT crmJoin.joinID) AS Jobs, 
    Sum(Case When crmJoin.joinExtra = 'select' Then 1 else 0 end) as Selected,
    Sum(Case When crmJoin.joinExtra = 'winner' Then 1 else 0 end) as winner,
    ROUND(SUM(crmDays.total)) AS totalDays 
FROM crmCandidate 
LEFT JOIN crmJoin   
    ON crmJoin.joinChild = crmCandidate.candidateID
LEFT JOIN crmJob    
    ON crmJob.jobID = crmJoin.joinParent
Inner JOIN crmDays  
    On  crmDays.dayCandidateID  = crmCandidate.candidateID 
    AND crmDays.dayJobID        = crmJob.jobID
GROUP BY crmCandidate.candidateID, crmCandidate.candidateName
ORDER BY candidateID DESC 
LIMIT 100

关于mysql - 查询中的 Count、SUM、LEFT JOIN 和 GROUP BY 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26590792/

相关文章:

mysql - 多列索引是否比单列索引慢?

Java:有没有一种方法可以在不必列出所有文件的情况下查找目录中的文件数?

Mysql 查询学习天数

sql - 如何插入非分组数据

ruby-on-rails-3 - 根据其关联模型的 SUM 对玩家进行排序

php - 如何在 php 中对具有相似值的数据进行分组?

php - 排序不适用于 PHP SQL ORDER BY

mysql - 我应该在 SQL 过程中使用游标吗?

mysql - 从不同的表中选择,并得到一个结果 [mysql] [union] 或 [join]

SQL group by 和 count 固定列值