Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 错误查询SQL";组函数的使用无效“;_Mysql_Sql - Fatal编程技术网

Mysql 错误查询SQL";组函数的使用无效“;

Mysql 错误查询SQL";组函数的使用无效“;,mysql,sql,Mysql,Sql,我正在尝试运行此查询,但出现错误“组函数的使用无效”。还尝试了Año、Mes、Turno的组和相同的结果 我还想把THEN乘以100,结果是一个百分比,我必须在同一行上,或者在前一行的末尾 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(

我正在尝试运行此查询,但出现错误“组函数的使用无效”。还尝试了Año、Mes、Turno的
和相同的结果

我还想把THEN乘以100,结果是一个百分比,我必须在同一行上,或者在前一行的末尾

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;
谢谢你们

警察局。对不起,我的英语不好。

你不能在
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
,我的意思是,你将一个
大小写
表达式放在一个
总和
中,该表达式返回另一个
总和
。删除那些你的英语很好。无需[永远]道歉。我会添加一个与您的“分组依据”条款相匹配的“订单依据条款”。您为什么要计算百分比?我看不出这有什么意义。当然,把工作时间加起来,把轮班的总时间加起来,把它们转换成一个百分比,这样你就可以说“这个人在轮班时工作了95%的时间”或者其他什么,但是如果你把他们的百分比加起来,你会遇到一个懒惰的人,他每班20班只工作50%,报告说他在包含你的样本数据和预期输出方面工作了1000%。