sql查询的百分比,无效使用组函数

问题描述 投票:-1回答:2

出于某种原因,我遇到了使此查询生效的问题。

我试图在第3行得到一个百分比,其中我取curdate()小于d.next_call_date + 7 days的记录数除以总接触数,即count(*)然后由用户分组。我已经完成了这个只是一个记录计数,但当我尝试这个百分比时,我一直得到一个错误1111无效使用组功能。

如果我删除第3行它工作正常,所以我知道错误是存在的。

对某人来说,我做错了什么是显而易见的?

select 
 c.user as UserID,
 sum(curdate() < (d.next_call_date + interval 7 day ) / count(*)) as upToDate
From jfi_dealers.contact_events c
join Jackson_id.users u
on c.user = u.id
join jfi_dealers.dealers d
on c.dealer_num = d.dealer_num
where c.user = u.id
group by c.user;
mysql sql
2个回答
1
投票

圆括号位于错误的位置,因此count(*)嵌套在sum()中。但你应该能够使用avg()函数完全消除它:

select c.user as UserID,
       avg(curdate() < (d.next_call_date + interval 7 day ) ) as upToDate
. . .

0
投票

count(*)sum()移出:

select 
 c.user as UserID,
 sum(curdate() < (d.next_call_date + interval 7 day )) / count(*) as upToDate
From jfi_dealers.contact_events c
join Jackson_id.users u
on c.user = u.id
join jfi_dealers.dealers d
on c.dealer_num = d.dealer_num
group by c.user;

我还删除了where子句,因为它只包含重复的连接条件。

© www.soinside.com 2019 - 2024. All rights reserved.