2014-04-04 12 views
0

我有一個遊戲服務器,擁有超過15000的球員行和每一名球員行都有類似殺死,死亡人數,姓名等列的MySQL計算所有玩家的平均數量和更新列

這樣做時,服務器雙方,將是非常糟糕的,意味着我必須發送15k查詢來獲得每個玩家的殺/死比。

基本上我需要做的是從數據庫中獲得殺/死的平均值。

我有一個排,具有下列:

總平均,總殺敵,總的球員。

我需要找到總的平均殺傷力和總殺傷力。

總的平均值基本上是,我加載每個玩家,我殺死他,殺死他們並殺死他們(殺死/死亡)。所以總平均數包含所有球員殺/死比率,然後除以玩家數量。

玩家人數將是行數。殺死的總數是所有行中的所有殺傷力。

如何使用SQL來做到這一點?是否有效?

+0

你能提供一些樣本數據嗎? mysql具有像count()這樣的集合函數,您可以在其中計算行數......也可以這樣做服務器端並不意味着您必須執行15k查詢..取決於您擁有的數據..但是您應該能夠在查詢中這樣做 –

回答

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 

上述所有的查詢通過掃描所有記錄。這不是很有效,但除非您存儲這些值並使用觸發器更新它們,否則沒有其他辦法可以做到。

如果您需要更多幫助,請提供更多詳細信息。

0

SQL是執行此操作的最佳位置。 比方說你有一個表,playrtstats,用15K行具有以下字段:playerid,殺死,死亡,戲劇......

平均殺滅致死投喂量爲所有玩家:

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

希望知道每場比賽中死亡率最低的十名球員?

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