求oracle达人[200分求助]

瑞卡哥哥 2013-07-05 11:37:50
id A B C--列
ab 1 8 8
ab 2 7 9
ab 1 7 8
ab 1 8 8
ab 2 7 9
ab 2 7 8
ab 1 7 8

找出C=8的 记录中 A相同的 B=7的记录数[count]不大于3的 所有信息

结果
ab 1 7 8
ab 2 7 8
ab 1 7 8

求oracle的存储过程或sql语句或思路.
...全文
222 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2013-07-05
  • 打赏
  • 举报
回复

select t.*
  from mytable t,
       (select A, COUNT(*) as num
          from mytable
         where C = 8
           and B = 7
         group by A) t1
   where t.A = t1.A
   and t1.num <= 3
   and t.C = 8
   and t.B = 7

Mic_Gary 2013-07-05
  • 打赏
  • 举报
回复
借楼主的光,求大侠帮忙看看关于获取子目录的问题,谢谢啦 http://bbs.csdn.net/topics/390509745
瑞卡哥哥 2013-07-05
  • 打赏
  • 举报
回复
引用 11 楼 Chinajiyong 的回复:


select t1.* from (select  t.* from 
mytable t where t.C=8 and t.A in (select A from mytable where A=t.A  and B=7)
and t.B=7 order by t.A) t1
where rownum <= 3  
order by rownum 
不是只要3条记录 是每个组的count<=3的才符合要求
Regan-lin 2013-07-05
  • 打赏
  • 举报
回复
找出C=8的 记录中 A相同的 B=7的记录数[count]不大于3的 所有信息这句话的A相同的 B=7的记录数[count]不大于3的不是很明白,能说清楚点么?,就你上面显示的结果直接c=8 and b=7就得出了结果了,你是想要什么呢?
EnForGrass 2013-07-05
  • 打赏
  • 举报
回复


select t1.* from (select  t.* from 
mytable t where t.C=8 and t.A in (select A from mytable where A=t.A  and B=7)
and t.B=7 order by t.A) t1
where rownum <= 3  
order by rownum 
EnForGrass 2013-07-05
  • 打赏
  • 举报
回复


Create table  mytable
(
  id VARCHAR2(10) not null,
  A  int,
  B  int,
  C int
);
insert into mytable
select 'ab',3,7,8 from dual
union all
select 'ab',2,7,9 from dual
union all 
select 'ab',1,7,8 from dual
union all
select 'ab',1,8,8 from dual
union all
select 'ab',2,7,9 from dual
union all
select 'ab',2,7,8 from dual
union all
select 'ab',1,7,8 from dual


select  t.* from 
mytable t where t.C=8 and t.A in (select A from mytable where A=t.A  and B=7)
and t.B=7
shashengduguzhe 2013-07-05
  • 打赏
  • 举报
回复
引用 6 楼 zhouqinghe24 的回复:
[quote=引用 2 楼 soaringbird 的回复:] linq就简单了 var list = new List<ABC> { new ABC(1, 8, 8), new ABC(2, 7, 9), new ABC(1, 7, 8), new ABC(1, 8, 8), new ABC(2, 7, 9), new ABC(2, 7, 8), new ABC(1, 7, 8) }; var q = list.Where(a => a.B == 7) .GroupBy(a => a.A) .Where(g => g.Count() <= 3);
linq 的确实很容易理解 不过我需要的是sql 现在没办法实现g.count 这个的计算[/quote] 在select 语句中加上top 关键字。如select top 3 A,B from .........
Code従業員 2013-07-05
  • 打赏
  • 举报
回复
引用 5 楼 zhouqinghe24 的回复:
不是这样 C=8 是首要条件 在c=8的所有记录中 找出A相同 B=7的
这个,没啥关系吧,例如B=7为首要条件,查找A相同、C=8的项,结果是一样的。 你最好把实际的业务逻辑,说下。什么工程、要取什么字段、达到什么样的实际输出结果。 啃饭去了,回来再看
瑞卡哥哥 2013-07-05
  • 打赏
  • 举报
回复
引用 3 楼 bdmh 的回复:
在sqlserver中写的

select A.* from AA A right join (select AA.A,COUNT(*) as num from AA where AA.C=8 and AA.B=7 group by AA.A) B
on A.A=B.A where B.num<=3 and A.C=8 and A.B=7
这个有用。拿来参考下。
瑞卡哥哥 2013-07-05
  • 打赏
  • 举报
回复
引用 2 楼 soaringbird 的回复:
linq就简单了 var list = new List<ABC> { new ABC(1, 8, 8), new ABC(2, 7, 9), new ABC(1, 7, 8), new ABC(1, 8, 8), new ABC(2, 7, 9), new ABC(2, 7, 8), new ABC(1, 7, 8) }; var q = list.Where(a => a.B == 7) .GroupBy(a => a.A) .Where(g => g.Count() <= 3);
linq 的确实很容易理解 不过我需要的是sql 现在没办法实现g.count 这个的计算
瑞卡哥哥 2013-07-05
  • 打赏
  • 举报
回复
引用 1 楼 icdbow 的回复:
没看懂, 你就三个字段,其中B=7 C=8,而且A又相同,那不就是重复项么? 话说你的结果又不像查找重复项,ab 2 7 8 只出现一次,就上榜了。 你这个结果可以说直接 where B=7 and C=8 就行了
不是这样 C=8 是首要条件 在c=8的所有记录中 找出A相同 B=7的
  • 打赏
  • 举报
回复

select * 
from table1 
where C=8 and B=7 and A in (select A from (select count(*) as num,A from Table1 where B=7 group by A) z where z.num <= 3)
bdmh 2013-07-05
  • 打赏
  • 举报
回复
在sqlserver中写的

select A.* from AA A right join (select AA.A,COUNT(*) as num from AA where AA.C=8 and AA.B=7 group by AA.A) B
on A.A=B.A where B.num<=3 and A.C=8 and A.B=7

soaringbird 2013-07-05
  • 打赏
  • 举报
回复
linq就简单了 var list = new List<ABC> { new ABC(1, 8, 8), new ABC(2, 7, 9), new ABC(1, 7, 8), new ABC(1, 8, 8), new ABC(2, 7, 9), new ABC(2, 7, 8), new ABC(1, 7, 8) }; var q = list.Where(a => a.B == 7) .GroupBy(a => a.A) .Where(g => g.Count() <= 3);
Code従業員 2013-07-05
  • 打赏
  • 举报
回复
没看懂, 你就三个字段,其中B=7 C=8,而且A又相同,那不就是重复项么? 话说你的结果又不像查找重复项,ab 2 7 8 只出现一次,就上榜了。 你这个结果可以说直接 where B=7 and C=8 就行了

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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