天天看点

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 查询中的数学函数

有待更新....