我在mysql(phpmyadmin)中有一个表,其中包含以下列
我试图确定每一行的百分位数,并在g1ptile列中更新该值。g1ptile列是基于g1%的百分位数计算。我是根据吴宇森在这里给出的答案来使用以下内容的
SELECT `G1%`,
(1-ranks/totals)*100 Percentile FROM (
SELECT distinct `G1%`,
@rank:=@rank + 1 ranks,
(SELECT COUNT(*) FROM PCount) totals
FROM PCount a,
(SELECT @rank:=0) s
ORDER BY `G1%` DESC ) s;
并得到以下输出
输出在select语句中,我希望能够将其更新到表中的g1ptile列,但是无法使用
UPDATE `PCount` SET `G1Ptile`= --(All of the select query mentioned above)
您能否帮助修改查询/建议一个替代方案,以便我可以使用使用上述查询获得的百分位数值,并将其更新为同一表中的g1ptile。我还有一个问题,在g1%中有两个20%的值,但是分配给一个的百分位数是20,另一个是30。我希望他们都是20岁,下一排是30岁。
1条答案
按热度按时间dhxwm5r41#
我会把你的计算写成:
我做了一些与mysql处理变量的方式更加一致的更改。特别是
SELECT DISTINCT
以及ORDER BY
在子查询中。这在较新版本的mysql中是必需的(尽管在最新版本中可以使用窗口函数)。现在可以使用将其合并到更新中
JOIN
: