首頁 > 資料庫 > mysql教程 > 如何在 PostgreSQL 中有效聚合玩家遊戲統計資料?

如何在 PostgreSQL 中有效聚合玩家遊戲統計資料?

Linda Hamilton
發布: 2025-01-22 17:23:11
原創
933 人瀏覽過

How Can I Efficiently Aggregate Player Game Statistics in PostgreSQL?

最佳化 PostgreSQL 查詢以進行玩家遊戲統計資料聚合

本文解決了在 PostgreSQL 中高效檢索玩家遊戲統計數據的問題,特別關注玩家姓名、玩過的遊戲、贏的遊戲和輸的遊戲。 挑戰在於整合數據,玩家可以以 player_1player_2 的身份參與。 傳統方法通常涉及多個重複查詢。

簡化的查詢解決方案

對於 PostgreSQL 9.4 及更高版本:

利用 FILTER 子句取得簡潔易讀的程式碼:

<code class="language-sql">SELECT u.name,
       COUNT(*) FILTER (WHERE g.winner_id > 0) AS played,
       COUNT(*) FILTER (WHERE g.winner_id = u.id) AS won,
       COUNT(*) FILTER (WHERE g.winner_id <> u.id) AS lost
FROM games g
JOIN users u ON u.id IN (g.player_1_id, g.player_2_id)
GROUP BY u.name;</code>
登入後複製

對於所有 PostgreSQL 版本:

舊版的相容解決方案使用 ORNULL:

<code class="language-sql">SELECT u.name,
       COUNT(g.winner_id > 0 OR NULL) AS played,
       COUNT(g.winner_id = u.id OR NULL) AS won,
       COUNT(g.winner_id <> u.id OR NULL) AS lost
FROM games g
JOIN users u ON u.id IN (g.player_1_id, g.player_2_id)
GROUP BY u.name;</code>
登入後複製

這些最佳化的查詢有效地聚合玩家統計數據,避免冗餘查詢並提高效能。 選擇合適的方法取決於您的 PostgreSQL 版本。

以上是如何在 PostgreSQL 中有效聚合玩家遊戲統計資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板