gpt4 book ai didi

php - 找出某一行在具有不同值的行列表中的排名

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

我正在尝试为音乐家创建一个排名系统,在我的 mysql 表中我将它们列出如下:

id    genre    artist            rating      votes
1 rock pink floyd 138 25
2 rock black sabbath 149 28
3 pop katy perry 98 12
4 rock the who 72 14

用户可以按 1-10 的等级对艺术家进行评分,在投票时,我只需增加表中评分的数字 (1-10) 并将投票增加 1,因此为了确定排名,我将除以通过投票进行评分,即为排名。

我了解如何创建一个显示所有具有排名的艺术家的概述,但是我正在尝试找到一种有效的方法来确定特定艺术家的排名。

长话短说:如果我要出现在黑色安息日子页面上,我将如何确定它在摇滚流派中的排名?

我希望这个解释是可以理解的。

最佳答案

   SELECT COUNT(mi.genre) + 1 rank
FROM musician m
LEFT JOIN (
SELECT genre, ROUND(COALESCE(rating/votes,0),10) rating_per_vote
FROM musician
) mi
ON mi.genre = m.genre
AND mi.rating_per_vote > ROUND(COALESCE(m.rating/m.votes,0),10)
WHERE m.artist = 'black sabbath';

DEMO

更新

你实际上可以从内表中删除 id,我做了一些尝试。但是,您确实需要 ROUND() 来确保比较正确。

关于php - 找出某一行在具有不同值的行列表中的排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25936268/

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