# 使用 SQL Data Explorer 查询参数值

> Learn how to query custom event parameters in SQL Data Explorer with practical examples.

## 简介##queries

使用 SQL Data Explorer（SQL 数据资源管理器）工具分析特定参数的值。

以下是分析参数值的多种方法，其中包括查询的实际示例和注释，以帮助您更好地了解如何在游戏中复制这些查询。

## 说明

* 以下每个示例都使用相同的上下文：在一个 RPG 游戏中，玩家可以选择一个角色，开始并完成地牢，在地牢中时使用药水来恢复生命值。
* 复制这些查询时，请确保替换突出显示的查询项，以便适应您自己的事件名称和参数。

## 查询

### 1.特定时间范围内（每天）使用的平均药水量##1-average-potions-used-over-a-specific-time-range-day-by-day

```undefined
with potionsStats as (
select
EVENT_DATE,
EVENT_JSON:potionsUsed::Integer as potions
FROM EVENTS where EVENT_DATE > CURRENT_DATE-7 and EVENT_DATE < current_date and EVENT_NAME=’dungeonCompleted’
)
select EVENT_DATE as “Date”, round(avg(potions)) as “Average Potions Used”
from potionsStats
group by EVENT_DATE
order by EVENT_DATE
```

注意：

* `potionsStats` 是我们的子查询。

* `potionsUsed` 是随 `dungeonCompleted` 事件一起发送的参数，用于记录地牢中使用的药水量。

* `potions` 是我们给 EVENT\_JSON:`potionsUsed`::Integer 指定的名称。

* `7` 定义了我们要分析的时间范围。在本例中，时间范围是过去 7 天。

* 第 8 行调用：

  * X 轴上的事件日期。
  * `potions` 的四舍五入平均值以获得干净的数字，但如果您想查看小数，可以将其移除。

* `Average Potions Used` 为我们在 Y 轴上的四舍五入平均运算指定一个干净的名称。

### 2.特定时间范围内（总时间范围）使用的平均药水量##2-average-potions-used-over-a-specific-time-range-total-time-range

如果您想了解每个玩家使用的平均药水量，以便查看某个时间点的消耗量，请参考以下示例。

```undefined
with potionsStats as (
select
EVENT_NAME,
EVENT_JSON:potionsUsed::Integer as potions
FROM EVENTS where EVENT_DATE > CURRENT_DATE-7 and EVENT_DATE < current_date and EVENT_NAME='dungeonCompleted'
)
select EVENT_NAME as “Dungeon Completed”, round(avg(potions)) as “Average Potions Used”
from potionStats
group by 1
```

### 3.每个地牢使用的平均药水量##3-average-potion-used-per-dungeon-name

请参考以下示例以更好地了解玩家在游戏中的何处使用药水来平衡地牢。

```undefined
with potionsAndDungeons as (
select
EVENT_JSON:dungeonName::string as dungeonName,
EVENT_JSON:potionsUsed::integer as potions
FROM EVENTS where EVENT_DATE > CURRENT_DATE-7 and 
EVENT_NAME='dungeonCompleted'
)
select dungeonName as “Dungeon”, avg(potions) as "Average potions used"
from potionsAndDungeons
group by dungeonName
order by dungeonName
```

注意：

* 此示例基于前两个采用了 `potionsUsed` 和 `dungeonCompleted` 的查询。
* 此示例使用了与 `dungeonCompleted` 事件一起发送的 `dungeonName` 参数（表示已完成的地牢的名称）。此参数将在 Y 轴上使用。

### 4.在地牢中使用每个角色的百分比##4-percentage-of-character-use-in-dungeons-per-character-name

请参考以下示例查看游戏中最受欢迎的角色。

```undefined
select
EVENT_JSON:characterName::STRING as character,
((count(EVENT_JSON:characterName::STRING)) / ( select count(*) from events
where EVENT_NAME = 'dungeonCompleted' and EVENT_DATE > current_date-7
)) as percentage
from events
where EVENT_NAME = 'dungeonCompleted' and EVENT_DATE > current_date-7
group by character
order by percentage desc
```

注意：

* 此示例以 `character` 的形式调用 `characterName`。这是随 `dungeonCompleted` 事件一起发送的参数，用于记录所选角色。此参数将在 X 轴上使用。
* 第 3 行和第 4 行将每个角色的总数除以完成的地牢总数，获得 Y 轴上所需的百分比。

### 5.通过数据透视表计算每个地牢使用的角色数##5-pivot-table-to-count-the-character-used-per-dungeon-name

请参考以下示例以清楚地了解每个地牢使用角色的次数。这将有助于更好地平衡角色和地牢。

```undefined
select
EVENT_JSON:characterName::INTEGER,
EVENT_JSON:dungeonName::STRING,
count(EVENT_JSON:dungeonName::STRING) as dungeonCount
from events
where EVENT_NAME = 'dungeonCompleted'
and EVENT_DATE > current_date-7
group by 1,2
```

注意：

注释

* SQL Data Explorer（SQL 数据资源管理器）尚未对表视图进行数据透视，因此我们需要将结果导出为 csv，并在电子表格上创建视图。
* 此示例调用了角色名称、地牢参数和地牢名称数量。
* 处理此查询后，您需要：

1. 使用 Share（共享）按钮将结果导出为 csv。
2. 在电子表格中打开 csv 文件。
3. 从数据创建数据透视表。
4. 从数据透视表创建图表。


**Frame:**
![](/api/media?file=/analytics/media/images/sql-query-save.png)

\\


**\\:**
!\[]\(/analytics/media/images/copy-of-sql-excel.png)

\\


**\\:**
!\[]\(/analytics/media/images/copy-of-sql-table.png)

\\


**\\:**
!\[]\(/analytics/media/images/copy-of-sql-query-bar.png)
