在sql中设置sum的小数位数

时间:2013-12-28 09:13:29

标签: mysql sql sum decimal

我有一个用于辩论比赛的数据库我正试图对排名进行排序,看看哪些学校将在学期末的决赛中出现。

我的工作原理如下图所示但是我无法绕过ptc字段,它目前最多返回4位小数,例如0.6667,如果他们赢得了3场辩论中的2位。

    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

我相信我必须在这里使用小数(2,2)然而我无法正确使用语法我尝试了一些不同的东西,比如

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

如果需要,我很乐意提供有关表格的更多信息,但我不认为这是必需的?

2 个答案:

答案 0 :(得分:13)

试试这个。

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

如果没有结果,那么必须有一个空值,请尝试这样做。

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

以下是一个简单的演示:

更新:

 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;

答案 1 :(得分:0)

对于 ptc 字段 Round,小数点后 2 位...

替换

这一行,

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

到,

这条线!

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