如何在Oracle中编写复杂的查询分组?
我有一个查询要写关于GROUPBY的一些列,并计算结果集 这是我的要求。我有一个表名table_1,它有3列如何在Oracle中编写复杂的查询分组?,oracle,group-by,Oracle,Group By,我有一个查询要写关于GROUPBY的一些列,并计算结果集 这是我的要求。我有一个表名table_1,它有3列id、key、value。记录类似于id\u 1 key\u 1 value\u 1。我想找出哪个值在同一id组中,并且在该id组下,所有键都有它们 以下是一个例子: id=id1, key=key1, value=value1 id=id1, key=key1, value=value2 id=id1, key=key2, value=value2 id=id1, key=key2, v
id、key、value
。记录类似于id\u 1 key\u 1 value\u 1
。我想找出哪个值
在同一id
组中,并且在该id
组下,所有键
都有它们
以下是一个例子:
id=id1, key=key1, value=value1
id=id1, key=key1, value=value2
id=id1, key=key2, value=value2
id=id1, key=key2, value=value3
id=id1, key=key3, value=value1
id=id1, key=key3, value=value2
id=id1, key=key3, value=value3
id=id2, key=key1, value=value2
id=id2, key=key1, value=value3
id=id2, key=key2, value=value2
id=id2, key=key2, value=value3
id=id2, key=key3, value=value1
id=id2, key=key3, value=value2
id=id2, key=key3, value=value3
结果应该是id1,value2
和id2,value2
id2,value3
您可以在id1
下看到所有key
都有一个值value2
而id2
下的所有key
都有valuevalue2
和value3
假设(ID、key、value)形成一个唯一的组合,即每个ID每个键只有一个值实例,这应该有效
with data_k as ( select id
, count(distinct key) no_of_key
from your_table
group by id )
, data_v as ( select id
, value
, count(*) no_of_value
from your_table
group by id, value )
select distinct data_k.id
, data_v.value
, data_k.no_of_key
, data_v.no_of_value
from data_k
join data_v on (data_k.id = data_v.id)
where data_k.no_of_key = data_v.no_of_value
order by data_k.id, data_v.value;
我不清楚你期望的实际结果是什么,所以我只是猜测一下预测
此版本有效。假设(ID、键、值)形成一个唯一的组合,即每个ID每个键只有一个值实例,则此版本有效
with data_k as ( select id
, count(distinct key) no_of_key
from your_table
group by id )
, data_v as ( select id
, value
, count(*) no_of_value
from your_table
group by id, value )
select distinct data_k.id
, data_v.value
, data_k.no_of_key
, data_v.no_of_value
from data_k
join data_v on (data_k.id = data_v.id)
where data_k.no_of_key = data_v.no_of_value
order by data_k.id, data_v.value;
我不清楚你期望的实际结果是什么,所以我只是猜测一下预测
此版本有效。谢谢您的回答。我认为2个“count over”语句应该是count(key)over(按id分区,value)no_of_key,count(value)over(按id分区,key)no_of_value谢谢你的回答。我认为2个‘countover’语句应该是count(key)over(按id分区,value)no_of_key,count(value)over(按id分区,key)no_of_value