表一employee:
id employeeId trxMoney
1 员工1号 4000
2 员工2号 5000
3 员工3号 1000
预期结果集:
i employeeId trxMoney rate
1 员工1号 4000 40%
2 员工2号 5000 50%
3 员工3号 1000 10%
目前的sql一:
SELECT (@i:=@i + 1) AS i , employeeId , trxMoney , SUM(trxMoney), ROUND(trxMoney/SUM(trxMoney),4)*100 AS rate
FROM employee,(Select @i:=0) B
GROUP BY employeeId
但是查询来的是:
i employeeId trxMoney SUM(trxMoney), rate
1 员工1号 4000 4000 100
2 员工2号 5000 5000 100
3 员工3号 1000 1000 100
目前的sql二:
SELECT (@i:=@i + 1) AS i , employeeId , trxMoney , SUM(trxMoney), ROUND(trxMoney/SUM(trxMoney),4)*100 AS rate
FROM employee,(Select @i:=0) B
查出来的是:
i employeeId trxMoney SUM(trxMoney), rate
1 员工1号 4000 10000 40
有哪个大神指导一下。
sql:
SELECT
id AS i,
employeeId,
trxMoney,
CONCAT(
trxMoney / (
SELECT
SUM(trxMoney)
FROMemployee
) * 100,
'%'
) AS rate
FROMemployee
;
select id ,emp,tre,tre/row_sum*100||'%' as rate
from (
select id ,emp,tre ,
sum(tre) over(order by id rows between unbounded preceding and unbounded following) row_sum
from (
select 1 id ,'A' emp,4000 tre from dual
union all
select 2 id ,'B' emp,5000 tre from dual
union all
select 3 id ,'C' emp,1000 tre from dual
)
)
select sum(trxMoney) into @totalMoney from employee;
select *, concat( ceil(trxMoney*100/@totalMoney), '%') as rate from employee;
要同时执行这两句MySQL 语句。@totalMoney 则是定义了个变量, concat 和 ceil 都是 MySQL 自身函数;
ceil 函数 用于取整, 你得出的 rate 要取什么样的值, 可以用不用的函数,具体可以另行百度MySQL 的函数。
如有帮助,望采纳。