我正在尝试运行此查询,但出现此错误“无效使用组功能”。还尝试了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。对不起,我的英语不好。
答案 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
。