得到一个错误,我没有正确分组或我正在分组的内容是不允许的,但我搜索了一下,没有看到这样的情况。发生此错误的所有其他帖子在where子句中都有一个聚合函数。除非我完全删除分组,否则什么都不会改变。在where子句中使用实际日期而不是
>= NOW() - INTERVAL 30 DAY
不会改变结果。
我正在寻找一个支持代理人的名字,一个适用于他们所在案件的标签,该代理商在该标签上的平均评级,以及他们使用该标签处理的票数。< / p>
这是我正在运行的查询:
select a.public_name, 'settings', format(avg(r.rating),2) as 'average',
count(label_name), pk_case_id
from bi.support_agents_list a
join bi.support_ratings_agents sra
on a.desk_id = sra.agent_desk_id
join bi.support_ratings r
on sra.response_id = r.response_id
and r.survey_id = sra.survey_id
join bizdw.support_labels_assigned_v2 l
on l.fk_case_id = r.pk_case_id
where r.date_submitted >= NOW() - INTERVAL 30 DAY
and a.start_date < '2014-01-22'
and a.end_date is null
and lower(l.label_name) in ('settings',
'settings-contributor'
'settings-socialaccount')
group by a.public_name, 'settings', format(avg(r.rating),2), pk_case_id
order by a.public_name, format(avg(r.rating),2), label_name desc
答案 0 :(得分:0)
这是您的group by
条款:
group by a.public_name, 'settings', format(avg(r.rating),2), pk_case_id
常量'settings'
是不必要的(允许但不做任何事情)。 format(avg(r.rating),2)
导致错误。该条款可以简单地为:
group by a.public_name, pk_case_id
答案 1 :(得分:0)
你正在根据格式(avg(r.rating),2)和其他列进行分组甚至avg(r.rating)本身将根据整个表或基于group by计算,所以你不能在group by中包含计算列,这不是逻辑正确的。
如果是您的要求,那么首先您必须根据productname和其他必需列在派生查询中获得avg(评级),然后您可以将此派生表与主表连接,并且您还可以包含avg(rating)列group by子句以及其他列,如productnames等。