2016-11-04 2 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

Значения 'NULL' не являются проблемой для агрегата' SUM() '. Запрос возвращает пять выражений в списке SELECT, то, что указано как «фактические результаты», показывает только четыре столбца. Учитывая образцы данных и запрос, мы ожидаем, что запрос вернет * пять * строк, а не одну строку, из-за выражений в предложении GROUP BY. Вы лаяете неправильное дерево о значениях «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

Try:

SUM(IFNULL(Discipline, 0))

вместо

SUM(DISCIPLINE)

firt один будет принимать значение 0 является null.

Смежные вопросы