MySQL-按组计算总数的百分比
有没有办法按组计算总数的百分比,在这种情况下按州计算,然后按降序排列 我有前3列,我想计算MySQL中的最后2列 我见过很多计算单个组百分比的例子,但我找不到一个例子,在多个组中计算百分比,然后进行排名。然后我想将结果限制在前N个前3个,例如。您可以通过以下方式获得结果:MySQL-按组计算总数的百分比,mysql,rank,top-n,Mysql,Rank,Top N,有没有办法按组计算总数的百分比,在这种情况下按州计算,然后按降序排列 我有前3列,我想计算MySQL中的最后2列 我见过很多计算单个组百分比的例子,但我找不到一个例子,在多个组中计算百分比,然后进行排名。然后我想将结果限制在前N个前3个,例如。您可以通过以下方式获得结果: State ID Value Result1 (%) Result2 (Rank) MA AAA 44 0.24 2 MA
State ID Value Result1 (%) Result2 (Rank)
MA AAA 44 0.24 2
MA BBB 12 0.07 4
MA CCC 90 0.50 1
MA DDD 34 0.19 3
CT EEE 200 0.10 5
CT FFF 300 0.15 4
CT GGG 400 0.20 3
CT HHH 500 0.25 2
CT III 600 0.30 1
您希望的输出是什么,以便它可以更清晰。您是如何计算该百分比的column@Rams,它在第四列中不是真正的百分比,而是:从44/180到24.44%。180是按状态分组的和值。当您对和部分有问题时,发布针对百分比部分的查询。我们为什么要更加努力地帮助你呢?
SELECT *
FROM (
SELECT tt.*
,@statewiserank := IF(@state_v = State, @statewiserank + 1, 1) AS statewiserank
,@state_v := State
FROM (
SELECT State,ID,Value, value/
(SELECT sum(value)
FROM yourtable it
WHERE it.state=ot.state
GROUP BY state) result1_perc
FROM yourtable ot
ORDER BY state, result1_perc DESC) tt
)
WHERE statewiserank <= 3