MySQL计算所有玩家的平均数量并更新列

时间:2014-04-04 20:32:17

标签: mysql

我有一个游戏服务器,拥有超过15k的玩家行,并且每个玩家行都有像杀戮,死亡,姓名等一样的列。

所以做服务器端,会非常糟糕,意味着我必须发送15k查询来获得每个玩家的杀伤/死亡率。

基本上我需要做的是,从数据库中获取杀死/死亡平均值。

我有一行,其中包含以下列:

总平均值,总杀人数,总玩家数。

我需要找到总平均值和总杀数。

总平均值基本上是,我加载每个玩家,我接受他的杀戮,并且死亡并将它们分开(杀死/死亡)。所以总平均值包含所有球员的杀伤/死亡比率,然后除以球员数量。

玩家数量将是行数。并且总杀戮是所有行中的所有杀戮。

如何使用SQL执行此操作?这样做有效吗?

2 个答案:

答案 0 :(得分:1)

平均杀伤/死亡率:

SELECT AVG(kills/death) AS avg_kd FROM players

总球员:

SELECT COUNT(*) AS tot_players FROM players

总杀人次数:

SELECT SUM(kills) AS tot_kills FROM players

以上所有查询都会扫描所有记录。它不是很有效,但除非您存储这些值并使用触发器更新它们,否则没有其他方法可以做到这一点。

如果您需要进一步的帮助,请提供更多详细信息。

答案 1 :(得分:0)

SQL是执行此操作的最佳位置。 假设你有一张桌子,playrtstats,有15k行,包含以下字段:playerid,kills,deaths,plays ......

所有球员的平均杀伤率:

select sum(kills)/sum(deaths) from playerstats;

想知道死亡率最低的十名球员?

select deaths/plays from playerstats order by 1 asc limit 10;