●●●●●一句SQL的写法.这是无法完成的任务吗,看看有没有高手来实现?●●

xiaobeibei 2003-03-28 03:46:21
表结构.
假设有一个表叫T1, 里面有3项.A,B,C.
A,B 是表的主键.

实现功能.
统计表中记录的个数.
条件:
如果A有重复的记录.就只统计在这些重复的记录中B为1的记录.
其他的记录按照正常个数统计.

如果用SQL来写的话.....该怎么实现? 先谢谢大家了.
...全文
32 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lastdrop 2003-03-29
  • 打赏
  • 举报
回复
因为A,B为主键,那么A重复的记录中最多只可能有一条记录的B为1,同时从楼主的题意看,A重复的记录中至少有一条记录的B为1,所以只要简单的使用下面的SQL就OK了。

select count(distinct A) from T1;
ww_xiaohua 2003-03-28
  • 打赏
  • 举报
回复
TO: maohaisheng()
写的实在妙!
nashan 2003-03-28
  • 打赏
  • 举报
回复
a,b是主键,本身具有唯一性,不需要group by,有待改进.
yuaiwu 2003-03-28
  • 打赏
  • 举报
回复
select a,b,count(*) from(
select * from scott.tt t
minus
select * from scott.tt t where
a in
(select a cnt from scott.tt t
group by a
having count(*) >1
)
and b <> 1
)group by a,b




nashan 2003-03-28
  • 打赏
  • 举报
回复
写的漂亮!
maohaisheng 2003-03-28
  • 打赏
  • 举报
回复
把tab分开,先统计A有重复记录的,再统计A没有重复的,相加

select sum(sum1) from
(
select count(*) as sum1
from tab1 where B=1 and A in
(
select A
from tab1
group by A
having count(A)>1
)
union all
select count(*) as sum1
from tab1 where A in
(
select A
from tab1
group by A
having count(A)=1
)
);

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧