mysql 授权 函数查询_第6篇 MySQL 查询中的数学函数

本篇主要讲述常用的数学函数。

ROUND() 函数

我们首先看一下没有使用ROUND()之前的例子,例如我们计算所有员工的奖金,如下示例

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

输出

7effdd63a6e5131304b6b531e1951067.png

使用ROUND( )函数后,

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

输出如下图,ROUND()传入一个参数的话,默认取整。

940f31fb5309621b66885981acbdbb90.png

如果需要保留小数点后两位,在ROUND()函数传入第2个参数,例如下面所示

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

输出效果

55ed780214c740801c69b1bc27056adb.png

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;

输出效果

5794a4a65c1150edfc512172a6c8587f.png

使用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;

输出效果

677e55609604ea01751286eddcff19d5.png

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;

输出效果

e5216a38a9fa4e5bc9bce11be09fe41a.png

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;

输出效果

dfcef6ab635bc9a0e6afb5d21edcfe90.png

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;

输出如下图所示

e50f3eba46b526a8a02ff0b0df8071e3.png

有待更新....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值