【发布时间】:2020-08-28 08:14:00
【问题描述】:
with
my_stats as (
select 24996 as competitionId, 17 as playerId, 'on' as onOff, 8 as fga, 4 as fgm, 0.50 as fgPct union all
select 24996 as competitionId, 17 as playerId, 'off' as onOff, 5 as fga, 3 as fgm, 0.60 as fgPct union all
select 24996 as competitionId, 24 as playerId, 'on' as onOff, 9 as fga, 6 as fgm, 0.67 as fgPct union all
select 24996 as competitionId, 24 as playerId, 'off' as onOff, 3 as fga, 1 as fgm, 0.33 as fgPct union all
select 24996 as competitionId, 27 as playerId, 'on' as onOff, 5 as fga, 4 as fgm, 0.8 as fgPct
),
my_output as (
select 24996 as competitionId, 17 as playerId, 'diff' as onOff, 3 as fga, 1 as fgm, -0.1 as fgPct union all
select 24996 as competitionId, 24 as playerId, 'diff' as onOff, 6 as fga, 5 as fgm, 0.34 as fgPct
)
select * from my_stats
select * from my_output
这里有一个简单的例子来展示我们正在努力解决的问题。我们有表my_stats,其中主键是competitionId, playerId, onOff 的组合,而onOff 列只能是“on”或“off”。对于单个competitionId, playerId then(其中有两行,一行用于“on”,一行用于“off”),我们希望从所有其他列中减去值(on - off)。
希望my_output 表清楚地说明了我们需要什么输出。在playerId = 27 的情况下,由于该播放器没有“关闭”行,因此可以简单地从输出中删除它们,因为无需进行计算。
【问题讨论】:
标签: sql count google-bigquery sum pivot