Skip to content
Advertisement

set decimal places of sum in sql

I have a database I use for a debating competition I am trying to sort the standings out to see which schools will play off in the finals at the end of the semester.

I have this working as shown below however I am not able to round the ptc field, it currently returns up to 4 decimal places eg 0.6667 if they have won 2 out of 3 debates.

    SELECT   t.id,
             t.name                  AS name,
             SUM(t.id  = d.winnerid) AS w,
             SUM(t.id != d.winnerid) AS l,
             SUM(t.id  = d.winnerid)/(SUM(t.id  = d.winnerid)+SUM(t.id != d.winnerid)) AS ptc
    FROM     debates AS d
        JOIN teams   AS t ON t.id IN (d.hostid, d.visitid)
    WHERE    d.visitid != -1
         AND d.debatedate < CURDATE()
    GROUP BY t.id
    ORDER BY ptc DESC

I believe I have to use decimal(2,2) here however I am not able to get the syntax right I have tried a few diferent things like

SUM(t.id  = d.winnerid)/(SUM(t.id  = d.winnerid)+SUM(t.id != d.winnerid)) AS ptc decimal (2,2)

Am happy to provide more information about the tables if required but I don’t think it is required?

Advertisement

Answer

try this.

SELECT ROUND(SUM(cash), 2)
FROM <tablename>

If you are getting no results, then there must be a null value, try this instead.

SELECT ROUND(SUM(cash), 2)
FROM<tablename> a
WHERE cash IS NOT NULL

Here is a simple demo of it :

Update :

 SELECT round( ROUND(SUM(p.prod_price = l.prod_unit_price), 2)
/ROUND(SUM(p.prod_id = l.prod_id), 2),2)
FROM b2b.product_master p
join b2b.move_cart_item_master l;
Advertisement