早教吧作业答案频道 -->数学-->
请教一个比较难缠的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,把这个清单列出来
可能标题比较拗口,直接上数据,这样大家就可以看明白了
字段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
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、若Sn=a^n+b表示等比数列的前n项的和,那么A、a可取值的个数大于1,b可取值的个数大于1 2020-04-27 …
利用麦克风和声卡可进行数字声音的录制。以下哪一个选项与声音的录制质量无关?A.量化位数B.取样频 2020-05-23 …
负ab加2ba1减5ab(就是加上附的5ab负ab加2ba1减5ab(就是加上附的5ab就是问负6 2020-07-03 …
线性方程组Ax=b,有唯一解的充要条件是R(A)=R(A,b)=n,现在R(A)=n,则b怎样才能 2020-07-13 …
设A,B均为n阶方阵,则下列结论正确的是().A)若A或B可逆,则必有AB可逆(B)若A或B不可逆, 2020-11-02 …
英语天才8852!“3班同学的生日日期”可不可以翻成"birthdateoffamiliesinCl 2020-11-23 …
两个近光速的人相撞会发生什么?A跟B两个人,A以近光速接近B,B同样以近光速接近A.但两个相撞时,对 2020-11-28 …
在下面研究的各个问题中可以被看做质点的是()A.研究奥运会乒乓球男单冠军打出的弧圈球的转动B.确定奥 2021-01-18 …
可不可以这样理解,滑动摩擦力全部都是内能?Q的公式和滑动摩擦力的公式完全一样啊,怎么回事呢?比方说有 2021-01-23 …
填空一道!就今晚!SOS!5个A与3个B一样重,1个B与1个A加两个C一样重.那么,1个A家1个B与 2021-02-01 …