簡體   English   中英

在where子句中無效使用組函數且沒有聚合函數

[英]Invalid use of group function with no aggregate function in where clause

收到我未正確分組或我正在分組的錯誤的消息是不允許的,但我進行了一些搜索,沒有看到類似的情況。 發生此錯誤的所有其他帖子在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

這是您的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

您正在基於format(avg(r.rating),2)和其他列進行分組,甚至avg(r.rating)本身也將基於整個表或基於分組依據進行計算,因此您無法在group by中包含一個計算列,這在邏輯上是不正確的。

如果這是您的要求,那么首先您必須基於產品名稱和其他必需列在派生查詢中獲得avg(rating),然后可以將此派生表與主表連接起來,還可以在group by子句中包含avg(​​rating)列以及其他列,例如產品名稱等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM