Ошибка запроса SQL «Неправильное использование групповой функции» - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь выполнить этот запрос, но я получил эту ошибку "Неправильное использование групповой функции". Также пробовал group by Año, Mes, Turno; и тот же результат.

Также я хочу умножить THEN на 100, чтобы получить результат в процентах, я должен сделать это на той же строке THEN или в конце перед AS?

select year(c.start) as Año, month(c.start) as Mes, s.name as Turno,
SUM(
    CASE
        WHEN u.name ='Jorge Robles Ruiz'
        THEN SUM(TIMESTAMPDIFF(SECOND,c.start,c.end)/3600) /
            SUM(TIMESTAMPDIFF(SECOND,s.startTime,s.endTime)/3600)
        ELSE 0
    END
) AS 'Jorge Robles Ruiz',
SUM(
    CASE
        WHEN u.name ='Ricardo Jarquín'
        THEN SUM(TIMESTAMPDIFF(SECOND,c.start,c.end)/3600) /
        SUM(TIMESTAMPDIFF(SECOND,s.startTime,s.endTime)/3600)
        ELSE 0
    END
) AS 'Ricardo Jarquín' 
from `cicles` as `c` 
inner join `users` as `u` on `u`.`id` = `c`.`opId` and `u`.`companies_id` = `c`.`companies_id` 
inner join `shifts` as `s` on `s`.`id` = `c`.`shiftId` and `s`.`companies_id` = `c`.`companies_id` 
where `c`.`start` 
    between 2018-12-01 and 2019-01-11 
    and `c`.`opId` in (1, 2) 
    and `s`.`visible` = 1 
    and `c`.`companies_id` = 1 
    and `c`.`status` = 1 
group by year(c.start), month(c.start), s.name;

Спасибо, ребята!

PD. Извините за мой плохой английский.

1 Ответ

0 голосов
/ 15 января 2019

Вы не можете иметь SUM() внутри SUM(), и я не думаю, что они вам оба нужны здесь. Я думаю, что вы должны написать:

SUM(IF(u.name = 'Jorge Robles Ruiz', TIMESTAMPDIFF(SECOND,c.start,c.end), 0))
    / SUM(IF(u.name = 'Jorge Robles Ruiz', TIMESTAMPDIFF(SECOND,s.startTime,s.endTime), 0))
    / 3600 AS 'Jorge Robles Ruiz',

Чтобы сделать это в процентах, умножьте на 100 в конце или просто измените / 3600 на / 36.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...