2014-03-04 57 views
0

得到一个错误,我没有正确分组或者我不能分组,但我搜索了一下,没有看到像这样的情况。所有其他有这个错误的帖子在where子句中都有一个聚合函数。没有什么变化,除非我完全删除分组。在where子句中使用实际日期而不是组合函数无效使用组合函数并没有聚合函数在where子句中

>= NOW() - INTERVAL 30 DAY 

不会改变结果。

我正在寻找支持代理的名称,应用于他们所处案例的标签,该代理在该标签上的平均评分,以及他们使用该标签所处理的票数。

这是我在运行查询:

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 
+1

group by count(label_name)??? – Hackerman

+0

这不应该是在那里,我复制/粘贴时,我正在尝试几件事情。我用'平均'替换了格式(平均(r.rating),2),这似乎已经完成了。 – user3258198

回答

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 
0

您是通过基于格式做组(AVG(r.rating),2)与其他列,甚至AVG(r.rating)沿本身将被计算基于无论是整个表或基于group by,因此您不能在group by中包含计算列,这是不合逻辑的。

如果这是您的要求,那么首先您必须根据产品名称和其他所需列在派生查询中获得平均值(评级),然后您可以将此派生表与您的主表一起加入,并且还可以包括平均(评级)列在group by子句中连同其他列如产品名称等