2017-03-04 69 views
0

我已經搜索了很多,但沒有其他問題與錯誤1111解決我的問題。 我的需求來算一些ID 下面的代碼工作的不同電話號碼:[HY000] [1111]組功能的使用無效

SELECT 
    a.id_borrow_application, 
    count(DISTINCT c.phone_no) CVG_CALL_OUT_COUNTS_6M 
FROM t_snow_borrow_application_id a 
    JOIN t_snow_call_mobile b 
    JOIN t_snow_call_record_201612 c ON 
            (
             a.id_borrow_application = b.id_borrow_application 
             AND b.id = c.id_call_mobile 
             ) 
WHERE c.call_type = 0 
GROUP BY a.id_borrow_application; 

但是,當我想寫4個類似的查詢一起,在標題 錯誤發生。

[HY000] [1111]無效使用組功能

SELECT 
    a.id_borrow_application, 
    sum(CASE WHEN call_type = 0 
    THEN count(DISTINCT c.phone_no) 
     ELSE 0 END) CVG_CALL_OUT_COUNTS_6M, 
    sum(CASE WHEN call_type = 0 AND c.days <= 30 
    THEN count(DISTINCT c.phone_no) 
     ELSE 0 END) CVG_CALL_OUT_COUNTS_1M, 
    sum(CASE WHEN call_type = 1 
    THEN count(DISTINCT c.phone_no) 
     ELSE 0 END) CVG_CALL_IN_COUNTS_6M, 
    sum(CASE WHEN call_type = 1 AND c.days <= 30 
    THEN count(DISTINCT c.phone_no) 
     ELSE 0 END) CVG_CALL_IN_COUNTS_1M 
FROM t_snow_borrow_application_id a 
    JOIN t_snow_call_mobile b 
    JOIN t_snow_call_record_201612 c ON 
            (
            a.id_borrow_application = b.id_borrow_application 
            AND b.id = c.id_call_mobile 
             ) 
GROUP BY a.id_borrow_application; 

難道我就寫4個查詢?

回答

1

您正在嵌套MySQL中不允許的聚合函數。

對於不同的條件,您實際上不需要計數不同的phone_nos的求和函數。取出案例外的count (distinct,並刪除sum函數和caseelse子句。

試試這個:

select a.id_borrow_application, 
    count(distinct case when call_type = 0 then c.phone_no end) CVG_CALL_OUT_COUNTS_6M, 
    count(distinct case when call_type = 0 
       and c.days <= 30 then c.phone_no end) CVG_CALL_OUT_COUNTS_1M, 
    count(distinct case when call_type = 1 then c.phone_no end) CVG_CALL_IN_COUNTS_6M, 
    count(distinct case when call_type = 1 
       and c.days <= 30 then c.phone_no end) CVG_CALL_IN_COUNTS_1M 
from t_snow_borrow_application_id a 
join t_snow_call_mobile b 
join t_snow_call_record_201612 c on (
     a.id_borrow_application = b.id_borrow_application 
     and b.id = c.id_call_mobile 
     ) 
group by a.id_borrow_application; 
相關問題