在 oracle 中复制 Window_sum (tableau)

replicate Window_sum (tableau ) in oracle

我有一个这样的senario

SUBID     ID               Total   
2             0                  2
2             o                  2
2             0                   2
2              0                 2
3              1                 2
3              1                 2
3              1                2
4              1                  2
4               1               2

So now i should be getting   


2(Subjid)-->0 (我想要 distinct(ID)))
3(Subjid)--->1(我想要不同的(ID))
4(Subjid)--->1 我想要不同的(ID))
所以我的总数应该是 0+1+1=2 我们可以在 oracle 中执行此操作吗?我知道我们可以在 tbaleau 中执行此操作,因为 window_sum() 想知道 sql

假设我正确理解你的逻辑,你可以像这样实现你的结果(N.B。我假设你的样本数据中的 o 为 subid = 2 是一个错误并且它应该是 0):

with sample_data as (select 2 subid, 0 id from dual union all
                     select 2 subid, 0 id from dual union all
                     select 2 subid, 0 id from dual union all
                     select 2 subid, 0 id from dual union all
                     select 3 subid, 1 id from dual union all
                     select 3 subid, 1 id from dual union all
                     select 3 subid, 1 id from dual union all
                     select 4 subid, 1 id from dual union all
                     select 4 subid, 1 id from dual union all
                     select 4 subid, 1 id from dual)
select subid,
       id,
       sum(id_to_sum) over () total
from   (select subid,
               id,
               case when row_number() over (partition by subid, id 
                                            order by subid, id) = 1 then id end id_to_sum
        from   sample_data);

     SUBID         ID      TOTAL
---------- ---------- ----------
         2          0          2
         2          0          2
         2          0          2
         2          0          2
         3          1          2
         3          1          2
         3          1          2
         4          1          2
         4          1          2
         4          1          2

你可以看到Oracle支持的各种类型的解析函数in the documentation