【发布时间】:2022-01-25 15:59:37
【问题描述】:
我正在为我正在制作的一款游戏制作一组排行榜,并希望能够在其中拥有一个“K/D”(杀戮-死亡比率)排行榜。即选择(总击杀数)/(总击杀数)比率最高的玩家。
我的数据库目前被格式化为有两个表,一个 Kill 表和一个 Death 表(我知道在这个例子中,将它们作为两个单独的表看起来很愚蠢,但是还有其他与问题无关的细节手头,所以这些需要单独的表)
杀表:
| id | player_id | weapon_type | kill_count |
|---|---|---|---|
| 1 | 1 | Pistol | 5 |
| 2 | 1 | Rifle | 10 |
| 3 | 2 | Rifle | 20 |
| 4 | 2 | Pistol | 7 |
死亡表:
| id | player_id | weapon_type | death_count |
|---|---|---|---|
| 1 | 1 | Pistol | 2 |
| 2 | 1 | Rifle | 20 |
| 3 | 2 | Rifle | 10 |
| 4 | 2 | Pistol | 3 |
(请参阅https://i.imgur.com/V8OEVxo.png 了解表格应该是什么样子,因为上面的格式搞砸了。)
根据上述数据,查询最高 K/D 比率将返回 (2,27/13), (1, 15/22);即所有 (player_id, K/D ratio) 对按 K/D 比降序排列。
我已经为最高总击杀数等设置了其他排行榜,我实施如下:
SELECT player_id, sum(kill_count) as totalkills from Kill group by player_id order by totalkills desc;
这似乎工作正常,所以我认为我可以使用以下方法获得最高的 K/D 比率:
SELECT Kill.player_id, sum(kill_count)/sum(death_count) as KD from Kill, Death group by Kill.player_id order by KD desc;
但它给出了完全虚假的结果。
任何关于格式化我的查询的正确方法的指针将不胜感激:)
编辑:我不确定为什么表格在问题中的格式不正确,因为它们在预览中看起来不错。这是一个错误吗?
【问题讨论】:
-
Mysql/postgresql??你用的是哪个数据库??她们不一样。请正确标记您的问题
-
抱歉@nacho,我正在使用 postgresql 并更新了标签以反映这一点。
标签: sql postgresql