gpt4 book ai didi

Mysql,按百分比对用户进行排名

转载 作者:搜寻专家 更新时间:2023-10-30 23:40:03 25 4
gpt4 key购买 nike

我有一个这样的表格,用于保存学生历史考试的总分。

+----+---------------+-------+---------+-
| id | name | history | rank |
+----+---------------+-------+---------+-
| 1 | yngiid | 97 | |
| 2 | viyrp | 217 | |
| 3 | pae | 599 | |
| 4 | spohl | 284 | |
| 5 | shl | 295 | |
| 6 | okeer | 73 | |
| 7 | jmaany | 657 | |
| 8 | hxt | 80 | |
| 9 | yanier | 599 | |
+----+---------------+-------+----------+-

如您所见,历史字段包含学生的总分。现在,我想按分数对学生进行排名,分数越高排名越低,但只使用百分比。这意味着,用户只能从 1 到 100 排名,基本上类似于 stackoverflow 在个人资料页面上的排名,其中显示 .. top 1%

我试过这样的事情。

SELECT NAME, HISTORY, ROUND(history / 100) AS percentage FROM test ORDER BY percentage DESC

为此我只能得到这个。

name    HISTORY  percentage  
------ ------- ------------
jmaany 657 7
yanier 599 6
pae 599 6
shl 295 3
spohl 284 3
viyrp 217 2
yngiid 97 1
yngiid 97 1
okeer 73 1
yngiid 97 1
hxt 80 1
yngiid 97 1

以上是错误的,因为 (1) 百分比应该在 1 - 100% 之间,而拥有最高 HISTORY 点数的用户应该得到最低的百分比,也就是说 TOP 1% 或类似的东西。

如果有帮助,这里是一个示例表转储。

create table `test` (
`id` int (11),
`name` varchar (765),
`history` int (11),
`rank` int (11)
);

insert into `test` (`id`, `name`, `history`, `rank`) values
('1','yngiid','97',NULL),
('2','viyrp','217',NULL),
('3','pae','599',NULL),
('4','spohl','284',NULL),
('5','shl','295',NULL),
('6','okeer','73',NULL),
('7','jmaany','657',NULL),
('8','hxt','80',NULL),
('9','yanier','599',NULL);

最佳答案

basically similar to what stackoverflow has on the profile page, where it says .. top 1%

逻辑 stackoverflow 显示它的前 1% 等排名很容易写。这实际上意味着该用户在所有用户的前 1%。首先,对于每个用户,我们必须确定评级(历史)大于或等于的用户数量。然后应用简单的公式 numberOfUsersHavingGreaterOrEqualRating/numberofTotalUsers * 100

SET @total= (SELECT COUNT(*) FROM stud);
select s1.*, concat('TOP ', floor(nge / @total * 100), '%') as percent
from stud s1
join (select s1.id, count(s2.id) as nge
from stud s1
join stud s2
on s1.history <= s2.history
group by s1.id) as s2
on s1.id = s2.id
order by history desc

Play with it

关于Mysql,按百分比对用户进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36101226/

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