早教吧作业答案频道 -->数学-->
请教一个比较难缠的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查询...的网友还看了以下:
时段平均值或时段累计值所对应的观测时间为时段末的时间,()或累计值的观测时间则是旬、月终了 2020-05-27 …
通过树立咨询形象处理好咨询的主客体关系的工作主要落实在()A.接洽咨询阶段B.预备咨询阶段C. 2020-06-05 …
确定课题,签署协议属于企业管理咨询程序中的()A.接洽咨询阶段B.预备咨询阶段C.正式咨询阶段D. 2020-06-05 …
导数相关的题.1.当K取何值时,分段函数:x不等于0时,f(x)=x的k次方乘以sin(1/x), 2020-06-11 …
好的一百悬赏,关于胡萝卜的作文用上说明方法一定要用上列数字、作比较,举例子!第一个写胡萝卜的整体第 2020-07-11 …
已知函数f(x)=Ix-1I+Ix+1Ix属于R1,证明:函数f(x)是偶函数2,利用绝对值及分段函 2020-11-01 …
已知函数f(x)=|x+1|+|x-1|(x∈R).(1)证明:f(x)函数是偶函数;(2)利用绝对 2020-12-08 …
已知函数f(x)=|x+1|+|x-1|(x∈R).(1)证明:f(x)函数是偶函数;(2)利用绝对 2020-12-08 …
已知函数(Ⅰ)判断该函数的奇偶性,并证明你的结论;(Ⅱ)利用绝对值及分段函数知识,将函数解析式写成分 2020-12-08 …
马克思指出:“如果物没有用,那么其中包含的劳动也就没有用,不能算作劳动,因此不能形成价值。”这段话说 2021-02-17 …