天天看點

mysql 授權 函數查詢_第6篇 MySQL 查詢中的數學函數

本篇主要講述常用的數學函數。

ROUND() 函數

我們首先看一下沒有使用ROUND()之前的例子,例如我們計算所有員工的獎金,如下示例

SELECT 
    `emp_no` '工号',
    `salary` '月薪',
    `from_date` '入職日期',
    salary*0.01374 '獎金'
FROM salaries
ORDER BY 獎金 DESC;
           

輸出

mysql 授權 函數查詢_第6篇 MySQL 查詢中的數學函數

使用ROUND( )函數後,

SELECT 
    `emp_no` '工号',
    `salary` '月薪',
    `from_date` '入職日期',
    ROUND(salary*0.01374) '獎金'
FROM salaries
ORDER BY 獎金 DESC;
           

輸出如下圖,ROUND()傳入一個參數的話,預設取整。

mysql 授權 函數查詢_第6篇 MySQL 查詢中的數學函數

如果需要保留小數點後兩位,在ROUND()函數傳入第2個參數,例如下面所示

SELECT 
    `emp_no` '工号',
    `salary` '月薪',
    `from_date` '入職日期',
    ROUND(salary*0.01374,2) '獎金'
FROM salaries
ORDER BY 獎金 DESC;
           

輸出效果

mysql 授權 函數查詢_第6篇 MySQL 查詢中的數學函數

CEIL( )函數

該函數向上取整,傳回大于等于該參數的最小整數

我們先來檢視一下沒有使用CEIL()函數之前的,查詢示例:

SELECT 
    `emp_no` '工号',
    salary/12 '月薪',
    `from_date` '入職日期',
    (salary/12)*0.1274 '獎金',
    salary/12*0.05 '保險',
    salary/12*(1+0.01374-0.005) '應付工資'
FROM salaries
ORDER BY 應付工資 DESC;
           

輸出效果

mysql 授權 函數查詢_第6篇 MySQL 查詢中的數學函數

使用CEIL()函數後,如下用例所示

SELECT 
    `emp_no` '工号',
    salary/12 '月薪',
    `from_date` '入職日期',
    CEIL(salary/12*0.1274) '獎金',
    CEIL(salary/12*0.05) '保險',
    CEIL(salary/12*(1+0.01374-0.005)) '應付工資'
FROM salaries
ORDER BY 應付工資 DESC;
           

輸出效果

mysql 授權 函數查詢_第6篇 MySQL 查詢中的數學函數

FLOOR()函數

該函數向下取整,傳回小于等還與該參數的最大整數,如下用例:

SELECT 
    `emp_no` '工号',
    salary/12 '月薪',
    `from_date` '入職日期',
    FLOOR(salary/12*0.1274) '獎金',
    FLOOR(salary/12*0.05) '保險',
    FLOOR(salary/12*(1+0.01374-0.005)) '應付工資'
FROM salaries
ORDER BY 應付工資 DESC;
           

輸出效果

mysql 授權 函數查詢_第6篇 MySQL 查詢中的數學函數

TRUNCATE()函數

該函數從第1個參數的小數點後的指定位置開始截斷,該特定位置由第2個參數所指定,例如如下圖

SELECT 
    `emp_no` '工号',
    salary/12 '月薪',
    `from_date` '入職日期',
    TRUNCATE(salary/12*0.1274,1) '獎金',
    TRUNCATE(salary/12*0.05,1) '保險',
    TRUNCATE(salary/12*(1+0.01374-0.005),1) '應付工資'
FROM salaries
ORDER BY 應付工資 DESC;
           

輸出效果

mysql 授權 函數查詢_第6篇 MySQL 查詢中的數學函數

MOD()函數

該函數取模運算,沒什麼好說的,見用例

SELECT 
    `emp_no` '工号',
    salary/12 '月薪',
    `from_date` '入職日期',
    ROUND(salary/12*0.1274,2) '獎金',
    ROUND(salary/12*0.05,2) '保險',
    750 '住房公積金',
    ROUND(MOD((salary/12*(1+0.01374-0.005)-750),937),2) '住房津貼',
    ROUND(salary/12*(1+0.01374-0.005)+MOD((salary/12*(1+0.01374-0.005)-750),937),2) '應付工資'
FROM salaries
ORDER BY 應付工資 DESC;
           

輸出如下圖所示

mysql 授權 函數查詢_第6篇 MySQL 查詢中的數學函數

有待更新....