我有以下查询,我在“sum(count(distinct idDriver)) as Conductores”中添加了 SUM(),但出现此错误:
错误代码:1111。群组功能使用无效
select
department as Delegación,
company as Compañía,
config as Configuración,
docs as Documentos,
sum(count(distinct idDriver)) as Conductores,
sum(ko) as "Doc. incorrectos",
round(sum(ko)/(docs*count(distinct idDriver))*100) as "% incumplimiento"
from
(
select
cd.name as department,
cfg_g.name as config,
c.businessname as company,
(select count(*) from widoc_config where idwidocconfiggroup=cfg_g.idwidocconfiggroup and idstatus=71001 and required=true) as docs,
wd.idDriver,
cfg_g.idwidocconfiggroup,
cfg.idwidocconfig,
cfg.iddocument,
a.idstatus,
if(a.idstatus=43002,"0","1") as ko
from
widoc_config_group cfg_g
join widoc_config cfg on cfg.idwidocconfiggroup=cfg_g.idwidocconfiggroup and cfg.idstatus=71001 and cfg.required=true
join widoc_client wc on wc.idclient=cfg_g.idclient and wc.idstatus=71001
join client c on c.idclient=wc.idclientassociated and c.idstatus_client=5004
join widoc_driver wd on wd.idwidocclient=wc.idwidocclient and wd.idstatus=71001
join driver d on d.iddriver=wd.iddriver and d.idstatus=71001
join widoc_fulfill_driver fd on fd.idwidocconfiggroup=cfg_g.idwidocconfiggroup and fd.idwidocdriver=wd.idwidocdriver
left join attachment_group a on a.idclient=wc.idclientAssociated and a.iddocument=cfg.iddocument and a.idstatus!=43004 and a.idFK=wd.idDriver
left join client_department cd on cd.idClientDepartment=wc.idClientDepartment and cd.idStatus=71001
where
cfg_g.idclient = 3683
#wc.idclientAssociated = 1865
and cfg_g.identitytype=73003
and cfg_g.idstatus=71001
) t
group by department,company;
我必须把这个HAVING代码放在哪里,我应该写什么?谢谢!
最佳答案
这里:
sum(count(distinct idDriver)) as Conductores,
sum(ko) as "Doc. incorrectos",
round(sum(ko)/(docs*count(distinct idDriver))*100) as "% incumplimiento"
你不能嵌套聚合函数:如果你仔细想想,sum(count(...))
毫无意义。我怀疑你想要:
count(distinct idDriver) as Conductores,
sum(ko) as "Doc. incorrectos",
round(sum(ko)/(docs*count(distinct idDriver))*100) as "% incumplimiento"
此外,您还应该枚举 group by
子句中的所有非聚合列。即使当前缺失的列在功能上依赖于列出的列,这仍然是 SQL 中的最佳实践(也是大多数 RDBMS 上的规则,包括 MySQL,除非禁用选项 FULL_GROUP_BY_ONLY)。所以你想改变这个:
group by department,company
致:
group by department, company, config, docs
关于mysql - SQL Select SUM() 组函数使用无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58605221/