Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-按组计算总数的百分比_Mysql_Rank_Top N - Fatal编程技术网

MySQL-按组计算总数的百分比

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

有没有办法按组计算总数的百分比,在这种情况下按州计算,然后按降序排列

我有前3列,我想计算MySQL中的最后2列

我见过很多计算单个组百分比的例子,但我找不到一个例子,在多个组中计算百分比,然后进行排名。然后我想将结果限制在前N个前3个,例如。

您可以通过以下方式获得结果:

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