我有一个项目,该项目按得分对不同项目进行排名,虽然排名还可以,但是当得分相同时,它会显示差距。
以下是查询:
res = []
for i, v in enumerate(s):
if not i % 2:
res.append(v.upper())
else:
res.append(v.lower())
print(''.join(res))
,它的输出是这样的:
有什么办法解决这个问题? 在此先感谢您的英语不好
答案 0 :(得分:1)
您基本上需要Dense_Rank()
之类的功能(在MySQL 版本> = 8.0 中可用)。在 MySQL的较旧版本中,它可以是emulated using Session Variables。
scc_bgyscoretotal
的等级(具有等级1的最高值,依此类推)。首先,获取scc_bgyscoretotal
的唯一值,然后使用Session Variables确定其排名。bgyprofile
将这些派生表联接到主表scc_bgyscoretotal
。 尝试以下操作:
SELECT t2.bgycode,
t2.scc_bgyscoretotal,
dt2.`rank`
FROM bgyprofile AS t2
JOIN
(
SELECT dt1.scc_bgyscoretotal,
@rank_no := @rank_no + 1 AS `rank`
FROM
(
SELECT t1.scc_bgyscoretotal
FROM bgyprofile AS t1
GROUP BY t1.scc_bgyscoretotal
ORDER BY t1.scc_bgyscoretotal DESC
) AS dt1
CROSS JOIN (SELECT @rank_no := 0) AS init1
) AS dt2 ON dt2.scc_bgyscoretotal = t2.scc_bgyscoretotal