2016-11-04 51 views
0

我想在mysql中執行一個組總結,但空值導致問題。我用NULLIF/IFNULL沒有幫助MYSQL組總和時有空值

下面是一個例子

Group Employee Discipline HardWork Dedication 
101 DTF   1   1    1 
101 Tim    1    1   0 
101 Erk    NULL  1   0 
101 PMD   NULL  1   0 
101 NSE   1    1   0 

SQL:

SELECT 
    GROUP, 
    SUM(EMPLOYEE), 
    SUM(DISCIPLINE), 
    SUM(HARDWORK), 
    SUM(DEDICATION) 
FROM 
    TABLE 
GROUP BY 
    GROUP, 
    EMPLOYEE, 
    DISCIPLINE, 
    HARDWORK, 
    DEDICATION 

預期結果:

101---3----5----1 

實際結果

101--5----5-----1 

任何人有什麼想法?

+0

你的查詢是沒有意義的,你不能'SUM'一個文本列的值,而'SUM'你正在執行'GROUP BY'的相同列只會導致每個聚合的1個值。你可能是指'COUNT'而不是? – Dai

+0

對於SUM()聚合,NULL值不是問題。查詢返回SELECT列表中的五個表達式,報告爲「實際結果」僅顯示四列。給定示例數據和查詢,由於GROUP BY子句中的表達式,我們希望查詢返回* 5行,而不是單行。你正在吠叫關於「NULL」值的錯誤樹「導致問題」。 – spencer7593

回答

0

我覺得您的查詢應該是:

SELECT 
    Group, 
    COUNT(Employee) AS EmployeeCountInGroup, 
    SUM(ISNULL(Discipline, 0)) AS SumDiscipline, 
    SUM(ISNULL(HardWork, 0)) AS SumHardWork, 
    SUM(ISNULL(Dedication, 0)) AS SumDedication 
FROM 
    TableName 
GROUP BY 
    Group 
+0

我試過這種方法,順便說一句ISNULL不是一個mysql的東西,IFNULL但它沒有給出預期的計數 – loveprogramming

1

嘗試:的

SUM(IFNULL(Discipline, 0))

代替

SUM(DISCIPLINE)

的firt一個將採取值爲0是找到null。