2016-07-22 12 views
0

Ich versuche, Conversion-Raten im laufenden Betrieb zu berechnen. Der Divisionsteil verursacht mir jedoch einige Probleme.PostgreSQL: Division gibt nur Nullen zurück

Hier ist mein Code:

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; 

Wie behebe ich dieses Problem der effizienteste Weg?

+2

Sie benötigen andere zu etwas werfen als 'INT', wie COUNT (DISTINCT bo.id) :: NUMERIC' – Nicarus

Antwort

2

warf sie einfach zu 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; 
Verwandte Themen