了解以下查询的结果集

时间:2013-08-11 17:00:43

标签: sql oracle11g

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

任何人都可以帮助我理解这个查询将如何工作..分区内的这个问题让我很难理解这个查询的结果集。我是

1 个答案:

答案 0 :(得分:0)

(忽略生成语法错误的from之前的逗号。)

有两个案例陈述。外面的人说“我只会在id1时分配一个号码。其他所有内容都会获得NULL值。

内在的是计算价值。它将数据分为两组,即num = 3和其他所有组。计算结果为sum的{​​{1}}。

因此,查询正在执行以下操作。它为num的每一行指定num等于3或不等于3的num的总和。