错误查询SQL“无效使用组功能”

时间:2019-01-14 20:41:09

标签: mysql sql

我正在尝试运行此查询,但出现此错误“无效使用组功能”。还尝试了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 :(得分:1)

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