我想使用GROUP BY CASE語句量化我的查詢輸出。 我在SELECT部分中的GROUP BY部分嘗試了CASE,但仍得到「錯誤代碼:1111.無效的組功能使用。」MySQL GROUP BY CASE錯誤
這裏是我的代碼(與CASE兩節)
SELECT
case when BBsum.sum <= 9999 then '<10K'
when BBsum.sum <= 10999 then '<11K'
when BBsum.sum <= 11999 then '<12K'
when BBsum.sum <= 12999 then '<13K'
when BBsum.sum <= 13999 then '<14K'
when BBsum.sum <= 14999 then '<15K'
when BBsum.sum <= 15999 then '<16K'
when BBsum.sum <= 16999 then '<17K'
when BBsum.sum <= 17999 then '<18K'
when BBsum.sum <= 18999 then '<19K'
when BBsum.sum <= 19999 then '<20K'
else '20K+' end as sum,
avg(sum(CASE when C.finance_type = 'INSTALLMENT_LOAN' then C.paid_amount end)/sum(CASE when C.finance_type = 'INSTALLMENT_LOAN' then C.initial_amount end)) as IL_RR,
avg(sum(CASE when C.finance_type = 'PAYDAY_LOAN' then C.paid_amount end)/sum(CASE when C.finance_type = 'PAYDAY_LOAN' then C.initial_amount end)) as PDL_RR,
avg(sum(C.paid_amount)/sum(C.initial_amount)) as RR
FROM
credit C
left join (select BB.borrower_id id, sum(BB.points) sum from borrower_bonus BB
where BB.type = 'CHARGE'
group by bb.borrower_id) BBsum on C.borrower_id = BBsum.id
where C.status IN ('EXPIRED', 'COMPLETED','SOLD')
group by case when BBsum.sum <= 9999 then '<10K'
when BBsum.sum <= 10999 then '<11K'
when BBsum.sum <= 11999 then '<12K'
when BBsum.sum <= 12999 then '<13K'
when BBsum.sum <= 13999 then '<14K'
when BBsum.sum <= 14999 then '<15K'
when BBsum.sum <= 15999 then '<16K'
when BBsum.sum <= 16999 then '<17K'
when BBsum.sum <= 17999 then '<18K'
when BBsum.sum <= 18999 then '<19K'
when BBsum.sum <= 19999 then '<20K'
else '20K+' end
order by sum DESC
我懷疑,我必須做一些更簡單的實現我想要的(分裂RR平均收到獎金的同夥)
你正在嵌套聚合函數'avg(sum('。MySQL does not allow that – GurV
)不要使用'sum'作爲列的別名,它可能會被函數sum的代碼弄糊塗,試試類似sumOfBB。即使mysql引擎碰巧讓它通過,它的錯誤練習 – gbtimmon