2016-11-04 6 views
0

mysqlでグループ集計を実行しようとしていますが、NULLが問題の原因です。ヌルがある場合のMYSQLグループの合計

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 
私はNULLIF/IFNULLどれもここで

を助けていない例である

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を使用しました

誰にでもアイデアはありますか?

+0

あなたのクエリは意味がありません。テキストカラム値を 'SUM'することはできず、' GROUP BY'を実行している同じカラムをSUMだけ集計すると、各集約に対して1つの値が得られます。代わりに 'COUNT'を意味するのでしょうか? – Dai

+0

'NULL'値は、' SUM() '集合体では問題になりません。クエリはSELECTリストの5つの式を返します。実際の結果は4つの列しか表示されません。サンプルデータとクエリが与えられた場合、クエリは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 1が0である値をとりますnullが見つかりました。

関連する問題