Использование SUM SEC_TO_TIME в MariaDB - PullRequest
0 голосов
/ 18 марта 2019

Ссылка от Как суммировать время, используя mysql

Я хочу SUM Поле LogsFormatted.Late Каждый месяц с запросом:

SELECT
    SUM(CASE 
          WHEN MONTH (LogsFormatted.DateIn) = 1 
          THEN SEC_TO_TIME( SUM( TIME_TO_SEC(LogsFormatted.Late)))
          ELSE 0 END 
        ) AS '1'
FROM
    HrAttLogsFormatted AS LogsFormatted

Но результат

1111 - Неправильное использование групповой функции

Где проблема с запросом? в результате выдается ошибка .. Заранее спасибо

[РЕДАКТИРОВАТЬ-РЕШЕНО] Это решается просто применить

Изменить формат SUM в начале запроса

SEC_TO_TIME(SUM(                                                    
  CASE WHEN MONTH(LogsFormatted.DateIn) = 1 THEN 
    TIME_TO_SEC(LogsFormatted.Late) END)                       
) AS '1'

1 Ответ

1 голос
/ 18 марта 2019

Вам не нужно звонить на sum() столько раз. Вы также можете переместить условие case в предложение WHERE:

SELECT SUM(TIME_TO_SEC(lf.Late)) 
FROM HrAttLogsFormatted lf
WHERE MONTH(lf.DateIn) = 1 ;

Если вы хотите условную агрегацию, выполните:

SELECT SUM(CASE WHEN MONTH(lf.DateIn) = 1 THEN TIME_TO_SEC(lf.Late) END)
FROM HrAttLogsFormatted lf;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...