早教吧 育儿知识 作业答案 考试题库 百科 知识分享

请教一个比较难缠的SQL查询,同一个表在不确定值的情况下,挑出重复数量等于一定个数的值可能标题比较拗口,直接上数据,这样大家就可以看明白了字段A字段B----------------------------------1a1b1

题目详情
请教一个比较难缠的SQL查询,同一个表在不确定值的情况下,挑出重复数量等于一定个数的值
可能标题比较拗口,直接上数据,这样大家就可以看明白了
字段A 字段B
----------------------------------
1 a
1 b
1 c
1 d
1 e
++++++++++++++++++
2 a
2 b
2 c
2 d
++++++++++++++++++
3 a
3 b
3 c
++++++++++++++++++
4 b
4 c
4 d
要达到的要求,如果我要挑出字段B中至少三个相同的字段A的值(以B字段的abc值为例,要求取出字段A的列表为1,2,3、或者另一个bcd值去查出,1,2,4、这样出来的最终结果会是1,2,3,4)
有没有办法做到?前题是这是在前一个表里面,询问了很多人,都无法做到,
------------------------------------------------------------------------------------------------------
a和b只是现有数据体中的一部份实例,不能以这个为条件来进行查询啊,可能你还没有完全看懂我要表达的意思,我想查询的是在上面这个表中,以distinct 字段A出来的1,2,3,4,5中,字段B(字段A全为1的B清单,字段A全为2的B清单,后面以此类推),需要一个SQL来查询这些所有的B清单数据的交集数到达一定数量的值,比如上例中,可以用a,b,c来当成一个判断的依据,但这个ABC,仅在此数据集中有效,如果换成其他的值就不能再用abc了,但是他们一要是属于数据交集的,比如,aa,bb,cc,不管数据最终是什么,只要能交集到的个数到达一定数量的就显示出distinct 字段A,把这个清单列出来
▼优质解答
答案和解析
我根据要求写了以下的SQL,不知道符不符合要求,
建表SQL
create table ta(
id number,
name varchar2(10)
)
insert into ta (ID,NAME)values (1,'a');
insert into ta (ID,NAME)values (1,'b');
insert into ta (ID,NAME)values (1,'c');
insert into ta (ID,NAME)values (1,'d');
insert into ta (ID,NAME)values (1,'e');
insert into ta (ID,NAME)values (2,'a');
insert into ta (ID,NAME)values (2,'b');
insert into ta (ID,NAME)values (2,'c');
insert into ta (ID,NAME)values (2,'d');
insert into ta (ID,NAME)values (3,'a');
insert into ta (ID,NAME)values (3,'b');
insert into ta (ID,NAME)values (3,'c');
insert into ta (ID,NAME)values (4,'b');
insert into ta (ID,NAME)values (4,'b');
insert into ta (ID,NAME)values (4,'d');
以下是查询B列重复最少3次a和3次b的交集123,
with a as
(select *
from (select a.name,count(*) cs
from ta a
group by a.name
having count(*) > 1) x
where x.cs >= 3
and x.name in ('a','b'))
select *
from (select h.id,count(*) ww
from ta h
where h.name in (select name from a)
group by h.id) w
where ww > 1
下面这个是结果是 1234
with a as
(select *
from (select a.name,count(*) cs
from ta a
group by a.name
having count(*) > 1) x
where x.cs >= 3
and x.name in ('a','b'))
select *
from (select h.id,count(*) ww
from ta h
where h.name in (select name from a)
group by h.id) w
感觉不太对,
另外那个
问题原话(要达到的要求,如果我要挑出字段B中至少三个相同的字段A的值(以B字段的abc值为例,要求取出字段A的列表为1,2,3、或者另一个bcd值去查出,1,2,4、这样出来的最终结果会是1,2,3,4)
前面的A出现3次的列为123没错,b出现最少3次的是1234,交集是 123
你这里的BCD是啥子意思,是B列三个特定的值
看了 请教一个比较难缠的SQL查询...的网友还看了以下:

数字1至20中,5位数组合数量是多少,就是比如说:15234;23532这样的组合再直观点说,就是  2020-04-27 …

挑战IQ,ABCDE五人过桥晚上天黑,有一座桥,有五个人ABCDE,要过此桥,现有一盏灯只能亮30  2020-05-17 …

在工程领域(例如航天引擎设计)操纵高分辨率的交互式图像在性能和可伸缩性方面历来都是一种挑战,因为这要  2020-05-31 …

有关平板划线操作不正确的是()A.将接种环直接在酒精灯火焰的充分燃烧层灼烧,可迅速彻底灭菌B.在挑  2020-06-28 …

人生的挑战挑战,在我们的生活中每时每刻都要面临着挑战,挑战现在,挑战未来,更主要的是挑战自己.挑战  2020-07-14 …

英语翻译我们一直在关注他们的这个项目,最近一段时间是这个项目的关键时期,他们一直在挑选合适的产品,  2020-07-22 …

“只要你肯改变,只要你有决心,你就可能做成不可能的事,并发现一个伟大的自我。”对此,下列认识正确的有  2020-11-27 …

阅读下面的文字,根据要求写一篇不少于800字的文章。很多人千里迢迢寻找隐居的武大师,期望能从武大师那  2020-12-11 …

A和B是2个人.A和B谁高?班上有64人,身高有一些微小的差异,让他们排成8行8列的方阵,如果从每一  2020-12-12 …

下列关于选取种子样本进行抽样检测的方法中,正确的是()A.在不能对检测对象逐一检测时使用B.抽取3-  2021-01-01 …