Mysql查询 - round()函数

时间:2015-09-25 11:19:42

标签: mysql sql

我想问一下,确实存在一些方法来使用来自leftjoin表的选定值,将圆函数作为十进制参数。

例如:ROUND(sum(stats_bets_hourly.turnover_sum / currencies.rate ), 2) AS turnover_sum

应该是:ROUND(sum(stats_bets_hourly.turnover_sum / currencies.rate ), currencies.comma) AS turnover_sum

谢谢,对不起我的英语。

更新 对不起那个问题很严重。 Round工作正常,但如果currency.comma值为0,则查询响应为 - 75312.000000,如果currency.comma值为2,则为 - 75312.480000,如果不是currency.comma,我只写0或2然后我得到 - 75312和75312.48。

3 个答案:

答案 0 :(得分:1)

是的,你可以这样做,只要它是一个整数。

答案 1 :(得分:1)

是的,当然您可以使用列而不是ROUND中的数字文字。

这很容易证明:

select round(123.4567, pos) from (select 2 as pos) x;

在你的情况下是

ROUND(sum(stats_bets_hourly.turnover_sum / currencies.rate ), currencies.comma)

在查询中必须只有一个currencies.comma值(通过在GROUP BY子句中使用currencies.commacurrencies.id,或者在WHERE子句中限制它们。 )如果您正在处理多个currencies.comma值,那么您可能需要两个步骤,例如:

select
  sum(turnover_partsum) as turnover_sum
from
(
  select 
    c.comma,
    round(sum(sbh.turnover_sum / c.rate ), c.comma) AS turnover_partsum
  from currencies c
  join stats_bets_hourly sbh on ...
  group by c.comma
);

编辑:还有一个想法:currencies.comma告诉你在进行计算时如何围绕?这似乎不太可能。也许您宁愿显示具有相应小数位数的货币。那将是FORMAT而不是ROUND

format(sum(sbh.turnover_sum / c.rate ), c.comma)

答案 2 :(得分:1)

对不起那个问题很糟糕。 Round工作正常,但如果currency.comma值为0,则查询响应为 - 75312.000000,如果currency.comma值为2,则为 - 75312.480000,如果不是currency.comma,我只写0或2然后我得到 - 75312和75312.48。