表概述
arena_team 表用于存储所有竞技场战队的核心信息。每个竞技场战队在这里有一条记录,包含战队的名称、队长、类型(2v2/3v3/5v5)、等级分(ELO)、赛季战绩以及战队徽章外观等数据。
- 战队基本信息管理
- 竞技场等级分(ELO)
- 赛季/每周战绩
- 战队徽章外观
主键为 arenaTeamId,是战队的唯一标识。type 字段区分战队规模:2=2v2, 3=3v3, 5=5v5。
表结构
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| arenaTeamId | int UNSIGNED | 0 | 竞技场战队ID(主键) |
| name | varchar(24) | NOT NULL | 战队名称 |
| captainGuid | int UNSIGNED | 0 | 队长角色GUID |
| type | tinyint UNSIGNED | 0 | 战队类型(2=2v2, 3=3v3, 5=5v5) |
| rating | smallint UNSIGNED | 0 | 当前战队等级分 |
| seasonGames | smallint UNSIGNED | 0 | 本赛季总场次 |
| seasonWins | smallint UNSIGNED | 0 | 本赛季胜场数 |
| weekGames | smallint UNSIGNED | 0 | 本周总场次 |
| weekWins | smallint UNSIGNED | 0 | 本周胜场数 |
| rank | int UNSIGNED | 0 | 战队排名 |
| backgroundColor | int UNSIGNED | 0 | 战队背景颜色 |
| emblemStyle | tinyint UNSIGNED | 0 | 徽章样式ID |
| emblemColor | int UNSIGNED | 0 | 徽章颜色 |
| borderStyle | tinyint UNSIGNED | 0 | 边框样式ID |
| borderColor | int UNSIGNED | 0 | 边框颜色 |
实际案例
案例1:查询指定战队的战绩信息
-- 查询战队ID为1的战队信息,包含胜率计算
SELECT
arenaTeamId, name, type,
CASE type WHEN 2 THEN '2v2' WHEN 3 THEN '3v3' WHEN 5 THEN '5v5' END AS type_name,
rating, seasonGames, seasonWins,
ROUND(seasonWins / seasonGames * 100, 1) AS win_rate,
weekGames, weekWins, rank
FROM arena_team
WHERE arenaTeamId = 1;案例2:查询等级分最高的前10个战队
SELECT
arenaTeamId, name, type, rating,
seasonGames, seasonWins, rank
FROM arena_team
ORDER BY rating DESC
LIMIT 10;案例3:按战队类型统计各分段的战队数量
SELECT
type,
COUNT(*) AS total_teams,
SUM(CASE WHEN rating >= 2000 THEN 1 ELSE 0 END) AS high_rating,
SUM(CASE WHEN rating >= 1500 AND rating < 2000 THEN 1 ELSE 0 END) AS mid_rating,
SUM(CASE WHEN rating < 1500 THEN 1 ELSE 0 END) AS low_rating
FROM arena_team
GROUP BY type;常见问题
Q1: arena_team 表的 type 字段取值含义是什么?
type 字段表示竞技场战队的人数规模:
2 = 2v2双人战队,3 = 3v3三人战队,5 = 5v5五人战队。Q2: rating 和 rank 有什么区别?
rating 是战队的实时ELO等级分,根据比赛胜负实时变化;rank 是本周/本阶段结束后计算的战队排名,通常每周刷新一次。Q3: 如何重置所有战队的每周战绩?
赛季结算时需要重置每周数据:
UPDATE arena_team SET weekGames = 0, weekWins = 0;。同时还需要在 arena_team_member 表中重置成员的周战绩。