出于某种原因,我遇到了使此查询生效的问题。
我试图在第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;
圆括号位于错误的位置,因此count(*)
嵌套在sum()
中。但你应该能够使用avg()
函数完全消除它:
select c.user as UserID,
avg(curdate() < (d.next_call_date + interval 7 day ) ) as upToDate
. . .
将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
子句,因为它只包含重复的连接条件。