我想问一下,确实存在一些方法来使用来自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。
答案 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.comma
或currencies.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。