在 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
我有一个这样的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