使用单列(Oracle)

时间:2015-09-28 08:23:33

标签: sql oracle

我有以下方案数据。我需要对列进行计数' c1'使用不同的数据集。总计数应基于来自列c1和e1的唯一数据。

with t as
(
select 'cab1' as c1, 'ae1' as e1 from dual
union all
select 'cab1' , 'ae2'  from dual
union all
select 'cab1' , 'ae3'  from dual
union all
select 'cab1' , 'ae4'  from dual
union all
select 'cab3' , 'ae1'  from dual
union all
select 'cab3' , 'ae1'  from dual
union all
select 'cab2' , 'ae'  from dual
)
select
 c1,e1, COUNT(*) OVER (partition by c1 order by c1,e1 ) as p1
from t;

我的结果应该是

c1      e1  count
-----------------------
cab1    ae3 4
cab1    ae2 4
cab1    ae1 4
cab1    ae4 4
cab2    ae  1
cab3    ae1 1

任何人都可以帮忙解决这个问题。

1 个答案:

答案 0 :(得分:1)

<强> SqlFiddleDemo

with t as
(
select 'cab1' as c1, 'ae1' as e1 from dual
union all
select 'cab1' , 'ae2'  from dual
union all
select 'cab1' , 'ae3'  from dual
union all
select 'cab1' , 'ae4'  from dual
union all
select 'cab3' , 'ae1'  from dual
union all
select 'cab3' , 'ae1'  from dual
union all
select 'cab2' , 'ae'  from dual
)
SELECT
 c1,
 e1,
 COUNT(*) OVER (partition by c1) as p1
FROM t
GROUP BY c1, e1