with sample_data as (
select 1 id, 1 num, 'Hello' val from dual union all
select 1 id, 2 num, 'Goodbye' val from dual union all
select 2 id, 2 num, 'Hey' val from dual union all
select 2 id, 4 num, 'What''s up?' val from dual union all
select 3 id, 5 num, 'See you' val from dual)
select id,
NUM,
CASE
WHEN ID=1 THEN
SUM(NUM) OVER (PARTITION BY CASE WHEN NUM=3 THEN ID END )
END AS SUM_1,
from sample_data
任何人都可以帮助我理解这个查询将如何工作..分区内的这个问题让我很难理解这个查询的结果集。我是
答案 0 :(得分:0)
(忽略生成语法错误的from
之前的逗号。)
有两个案例陈述。外面的人说“我只会在id
为1
时分配一个号码。其他所有内容都会获得NULL
值。
内在的是计算价值。它将数据分为两组,即num = 3
和其他所有组。计算结果为sum
的{{1}}。
因此,查询正在执行以下操作。它为num
的每一行指定num等于3或不等于3的num的总和。