本篇主要讲述常用的数学函数。
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;
输出如下图所示
有待更新....