V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
KasuganoSoras
V2EX  ›  MySQL

请教一个 MySQL 排序问题

  •  
  •   KasuganoSoras ·
    kasuganosoras · 41 天前 · 1226 次点击
    这是一个创建于 41 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景:在做一个小游戏排行榜,参加比赛用时最短,且游戏分数最高的玩家排名靠前

    现在在想怎么排序,目前能想到的办法是用一个固定时间,减去比赛用时,然后将得出的结果加上游戏分数,再以此排序,不过我 SQL 水平有限,不知道应该怎么写,有大佬可以指点一下吗?谢谢

    8 条回复    2021-06-24 11:04:06 +08:00
    yitingbai
        1
    yitingbai   41 天前
    你描述的太矛盾了,时间最短和分数最高, 这两个维度到底以哪个为准呢?到底是竞速游戏还是积分游戏?
    wpblank
        2
    wpblank   41 天前
    这两项总得有一个权重吧?多弄一列保存他们的加权总分。
    如果没权重单纯是时间优先的话,比如用时 1S,100 积分 排在 用时 2S,100 万积分的前面,那么直接 GROUP BY 用时,积分就行?
    wpblank
        3
    wpblank   41 天前
    @wpblank 打错了 ORDER BY
    KasuganoSoras
        4
    KasuganoSoras   41 天前
    @yitingbai 是一个赛车游戏,准确来说是漂移。游戏里车辆漂移的角度越大,得分越高,但是角度大了速度就慢,所以玩家需要在速度和角度之间找到一个平衡,能够做到速度不会太慢的同时分数高的人排名就高

    上面说的这个思路应该是差不多对的,但是不知道怎么用 SQL 去实现。
    yitingbai
        5
    yitingbai   41 天前
    @KasuganoSoras 楼上说的很对啊, 把时间换算成分数, 再 ORDER BY 分数
    thunderw
        6
    thunderw   41 天前
    不太慢是多慢?
    你这个问题就不是会不会 SQL 的问题,而是根本就没想好算法的问题。
    你的分数能够量化成数学公式吗?或者你举几个例子,具体的数字,你看能举出来不?
    具体数据量化你能想清楚的话,写 SQL 也就是分分钟的事。
    KasuganoSoras
        7
    KasuganoSoras   41 天前
    @thunderw 谢谢,确实是没想好,我重新想一下应该怎么做规则,谢谢大家了。
    yiplee
        8
    yiplee   36 天前
    赛车游戏应该谁最先通过终点谁就赢。为了鼓励漂移可以学习马里奥赛车,漂移之后有氮气加速效果,抵消漂移带来的降速效果。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   987 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 17ms · UTC 19:33 · PVG 03:33 · LAX 12:33 · JFK 15:33
    ♥ Do have faith in what you're doing.