本篇主要講述常用的數學函數。
ROUND() 函數
我們首先看一下沒有使用ROUND()之前的例子,例如我們計算所有員工的獎金,如下示例
SELECT
`emp_no` '工号',
`salary` '月薪',
`from_date` '入職日期',
salary*0.01374 '獎金'
FROM salaries
ORDER BY 獎金 DESC;
輸出
使用ROUND( )函數後,
SELECT
`emp_no` '工号',
`salary` '月薪',
`from_date` '入職日期',
ROUND(salary*0.01374) '獎金'
FROM salaries
ORDER BY 獎金 DESC;
輸出如下圖,ROUND()傳入一個參數的話,預設取整。
如果需要保留小數點後兩位,在ROUND()函數傳入第2個參數,例如下面所示
SELECT
`emp_no` '工号',
`salary` '月薪',
`from_date` '入職日期',
ROUND(salary*0.01374,2) '獎金'
FROM salaries
ORDER BY 獎金 DESC;
輸出效果
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;
輸出效果
使用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;
輸出效果
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;
輸出效果
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;
輸出效果
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;
輸出如下圖所示
有待更新....