gpt4 book ai didi

MySQL - 动态计算百分位数

转载 作者:行者123 更新时间:2023-11-29 01:23:11 25 4
gpt4 key购买 nike

我有一个 MySQL SELECT 查询,它在同一个表中使用 20 个不同的比较。这是一个例子:

SELECT * FROM mytable
WHERE (col1 > (col2 * 0.25))
AND (col5 < col10) .......

我正在尝试根据返回的 SELECT 结果中名为 SCORE 的列的顺序计算百分位数排名。我已经尝试使用增量行号和 COUNT(*) 来获取股票的排名和返回的结果总数,但不确定如何分配相同的排名,其中一些结果具有相同的 得分

这是我要计算的公式:

((COUNT(lower scores) + (COUNT(same/tied scores) / 2)) * 100) / COUNT(total results)

如何在同一结果行中找到较低分数、相同/并列分数和总分的数量,以便即时计算百分位数?

我试图避免使用存储过程,因为我希望我的应用程序管理员根据需要在我的应用程序管理区域内定制 SELECT 语句。

最佳答案

使用上面 Shlomi 的代码,这是我想出的用于计算百分位数排名的代码(以防将来有人想计算这些):

SELECT 
c.id, c.score, ROUND(((@rank - rank) / @rank) * 100, 2) AS percentile_rank
FROM
(SELECT
*,
@prev:=@curr,
@curr:=a.score,
@rank:=IF(@prev = @curr, @rank, @rank + 1) AS rank
FROM
(SELECT id, score FROM mytable) AS a,
(SELECT @curr:= null, @prev:= null, @rank:= 0) AS b
ORDER BY score DESC) AS c;

关于MySQL - 动态计算百分位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11543696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com