2016-07-22 6 views
0

나는 즉시 전환율을 계산하려고합니다. 그러나 분단 부분이 나를 괴롭 히고 있습니다. 어떻게이 문제가 가장 효율적인 방법 해결합니까PostgreSQL : 사업부가 0을 반환합니다

SELECT 
    b.owner_id AS "Owner ID", 
    COUNT(DISTINCT bo.id) AS "Number of Opportunities", 
    COUNT(DISTINCT CASE WHEN bo.state = 'won' THEN bo.id END) AS "Number of Wins", 
    (COUNT(DISTINCT CASE WHEN bo.state = 'won' THEN bo.id END)/(COUNT(DISTINCT bo.id)) AS "Inquiry Conversion Rate" 
FROM 
    bookings b 
INNER JOIN 
    booking_opportunities bo 
    ON (bo.id = b.opportunity_id) 
GROUP BY 
    1; 

: 여기

내 코드?

+2

당신은 COUNT'처럼 INT''가 아닌 다른 캐스팅 할 필요가 (DISTINCT bo.id) :: NUMERIC' – Nicarus

답변

2

간단히 NUMERIC에 캐스팅 :

SELECT 
    b.owner_id AS "Owner ID", 
    COUNT(DISTINCT bo.id) AS "Number of Opportunities", 
    COUNT(DISTINCT CASE WHEN bo.state = 'won' THEN bo.id END) AS "Number of Wins", 
    (COUNT(DISTINCT CASE WHEN bo.state = 'won' THEN bo.id END))::NUMERIC/(COUNT(DISTINCT bo.id))::NUMERIC AS "Inquiry Conversion Rate" 
FROM 
    bookings b 
INNER JOIN 
    booking_opportunities bo 
    ON (bo.id = b.opportunity_id) 
GROUP BY 
    1; 
관련 문제