背景
SQLで、有効数字n桁にまとめたいことがある。printfに相当する関数があればよいが、それがないとき。数行数字n桁にする計算式
xが丸めたい数値、nが丸めたい桁数の時に、BigQueryでは、round(x,integer(-log10(x)-1+n))単にlog10で桁数を求めただけ。微妙に100とか1000のように丁度になったときはintegerによる切り捨てがうまくいかない気がするが、 結局丸めたら、100や1000になるんじゃないの?と思う。
BigQueryの例
table_aのxでまとめたい。select x, sum(x) as sum from table_a group by xxの種類の数の列が出来てしまう。 そこで、2桁にまとめる。
select round(x,integer(-log10(x)-1+2)) as xx, sum(x) as sum from table_a group by xxめでたしめでたし。