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有没有一种方法可以按组(在本例中是按"State")计算总数的百分比,然后按降序排列?
我有前3列,我想在MySQL中计算后2列。
我见过很多跨单个组计算百分比的示例,但我找不到跨多个组计算百分比然后进行排名的示例。然后我想将结果限制在前N个(例如前3个)。
发布于 2017-06-13 21:55:42
您可以通过以下方式获取结果:
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 <= 3https://stackoverflow.com/questions/44522738
复制相似问题