mysql中的百分比統計例項,round函式

王爵nice發表於2016-05-16
select  b.year as year,b.month  as month  ,a.`typeName` as typeName ,
sum(`bj_xl`) as bj_xl,
sum(`bj_cl`) as bj_cl,
sum(`bj_xl`)+sum(`bj_cl`) as bj_all,
ROUND(sum(`bj_xl`)/(sum(`bj_xl`)+sum(`bj_cl`))*100, 1) as bj_xl_pre,
ROUND(sum(`bj_cl`)/(sum(`bj_xl`)+sum(`bj_cl`))*100, 1) as bj_cl_pre
from `phpcms_form_qysj_zfyg_tree` a ,`phpcms_form_qysj_zfyg_data` b
where a.typeId=b.`product_code`   AND `year` like `%2008%`  AND `month` like `%%`    AND `totalType` like `%粉%`
group by `product_code`  order by  typeId asc 
ROUND(X) ROUND(X,D) 

返回引數X, 其值接近於最近似的整數。在有兩個引數的情況下,返回 X ,其值保留到小數點後D位,而第D位的保留方式為四捨五入。若要接保留X值小數點左邊的D 位,可將 D 設為負值。

mysql> SELECT ROUND(-1.23);
        -> -1
mysql> SELECT ROUND(-1.58);
        -> -2
mysql> SELECT ROUND(1.58);
        -> 2
mysql> SELECT ROUND(1.298, 1);
        -> 1.3
mysql> SELECT ROUND(1.298, 0);
        -> 1
mysql> SELECT ROUND(23.298, -1);
        -> 20

返回值的型別同 第一個自變數相同(假設它是一個整數、雙精度數或小數)。這意味著對於一個整數引數,結果也是一個整數(無小數部分)。
當第一個引數是十進位制常數時,對於準確值引數,ROUND() 使用精密數學題庫:

對於準確值數字, ROUND() 使用“四捨五入” 或“舍入成最接近的數” 的規則:對於一個分數部分為 .5或大於 .5的值,正數則上舍入到鄰近的整數值, 負數則下舍入臨近的整數值。(換言之, 其舍入的方向是數軸上遠離零的方向)。對於一個分數部分小於.5 的值,正數則下舍入下一個整數值,負數則下舍入鄰近的整數值,而正數則上舍入鄰近的整數值。
對於近似值數字,其結果根據C 庫而定。在很多系統中,這意味著 ROUND()的使用遵循“舍入成最接近的偶數”的規則: 一個帶有任何小數部分的值會被舍入成最接近的偶數整數。
以下舉例說明舍入法對於精確值和近似值的不同之處:

mysql> SELECT ROUND(2.5), ROUND(25E-1);
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
| 3          |            2 |
+------------+--------------+

我的github地址:http://github.com/biezhi
開源框架Blade:http://github.com/biezhi/blade


相關文章