2016-11-04 4 views
0

Ich versuche, eine Gruppensummierung in MySQL durchzuführen, aber die Nullen verursachen Problem. Ich benutzte nullif/IFNULL keineMYSQL-Gruppe nach Summe, wenn Nullen vorhanden sind

half

Hier ist ein Beispiel

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 

Erwartetes Ergebnis:

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

Tatsächliches Ergebnis

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

Hat jemand irgendwelche Ideen?

+0

Ihre Abfrage ist bedeutungslos, Sie können nicht 'SUM' einen Textspaltenwert und' SUM' die gleichen Spalten, die Sie eine 'GROUP BY' ausführen, ergibt nur 1 Wert für jedes Aggregat. Meinst du vielleicht "COUNT"? – Dai

+0

Die 'NULL' Werte sind kein Problem für das' SUM() 'Aggregat. Die Abfrage gibt fünf Ausdrücke in der SELECT-Liste zurück. Was als "tatsächliche Ergebnisse" gemeldet wird, zeigt nur vier Spalten. Angesichts der Beispieldaten und der Abfrage würden wir erwarten, dass die Abfrage aufgrund der Ausdrücke in der GROUP BY-Klausel * fünf * Zeilen und nicht eine einzelne Zeile zurückgibt. Sie bellen den falschen Baum über die "NULL" -Werte auf, die "Probleme verursachen". – spencer7593

Antwort

0

Ich denke, Ihre Abfrage sollte:

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

Ich versuchte diesen Ansatz, übrigens ISNULL ist keine mysql-Sache, IFNULL, aber es gibt keine erwartete Anzahl – loveprogramming

1

Versuchen:

SUM(IFNULL(Discipline, 0))

statt

SUM(DISCIPLINE)

Der firt wird man den Wert 0 annehmen a null ist gefunden.

Verwandte Themen