Oracle 2 计数
Oracle 2 counts
我有2个table如下:
create table tab_a
(
a_child varchar2(20),
a_parent varchar2(20)
);
create table tab_b
(
a_child varchar2(20)
);
具有以下数据:
insert into tab_a values ('tom','dick snr');
insert into tab_a values ('dick jnr','dick snr');
insert into tab_a values ('harry','dick snr');
insert into tab_a values ('bob','fred');
insert into tab_a values ('ann','fred');
insert into tab_b values ('bob');
insert into tab_b values ('ann');
insert into tab_b values ('harry');
我希望结果如下所示:
a_parent | total of children in tab_a | total of children in tab_b
dick snr | 3 | 1
fred | 2 | 2
--注意:tab_a 将具有 tab_b 的所有值和更多值。实际上,tab_b 是 children 的可归档列表的 table。但是我不想存档任何 tab_b
中还没有全部 children 的 parent
SELECT ta.a_parent, COUNT (*) AS total_child_count, (select 'x' from dual)
FROM tab_a ta
GROUP BY ta.a_parent
我想解决上面的 x...这可能是一个连接的情况,但它需要考虑 a_parent
我想你想要一个 left join
和一个有两个计数的聚合:
select a.a_parent, count(a.a_child) as Achildren, count(b.a_child) as Bchildren
from tab_a a left join
tab_b b
on a.a_child = b.a_child
group by a.a_parent;
如果表格中有重复行,则应使用 count(distinct)
而不是 count()
。
我有2个table如下:
create table tab_a
(
a_child varchar2(20),
a_parent varchar2(20)
);
create table tab_b
(
a_child varchar2(20)
);
具有以下数据:
insert into tab_a values ('tom','dick snr');
insert into tab_a values ('dick jnr','dick snr');
insert into tab_a values ('harry','dick snr');
insert into tab_a values ('bob','fred');
insert into tab_a values ('ann','fred');
insert into tab_b values ('bob');
insert into tab_b values ('ann');
insert into tab_b values ('harry');
我希望结果如下所示:
a_parent | total of children in tab_a | total of children in tab_b
dick snr | 3 | 1
fred | 2 | 2
--注意:tab_a 将具有 tab_b 的所有值和更多值。实际上,tab_b 是 children 的可归档列表的 table。但是我不想存档任何 tab_b
中还没有全部 children 的 parent SELECT ta.a_parent, COUNT (*) AS total_child_count, (select 'x' from dual)
FROM tab_a ta
GROUP BY ta.a_parent
我想解决上面的 x...这可能是一个连接的情况,但它需要考虑 a_parent
我想你想要一个 left join
和一个有两个计数的聚合:
select a.a_parent, count(a.a_child) as Achildren, count(b.a_child) as Bchildren
from tab_a a left join
tab_b b
on a.a_child = b.a_child
group by a.a_parent;
如果表格中有重复行,则应使用 count(distinct)
而不是 count()
。