MySQL中怎么同时sql查询单个交易额,和该交易额占总交易额的百分比。

表一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

有哪个大神指导一下。

3个回答

sql:

SELECT
id AS i,
employeeId,
trxMoney,
CONCAT(
trxMoney / (
SELECT
SUM(trxMoney)
FROM
employee
) * 100,
'%'
) AS rate
FROM
employee;

图片说明

hu582205
itget 回复qq_37746483: 看图应该和你的要求一样
大约一年之前 回复
qq_37746483
好小一只 这并没有解决我遇到的问题呀,要的是每个员工的交易金额,和他们所占的百分比分组都列出来
大约一年之前 回复

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 的函数。

如有帮助,望采纳。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问