1

我有查询要按某些列编写分组并计算结果集。

这是我的要求。我有一个表名 Table_1 ,它有 3 列id, key, value。记录就像id_1 key_1 value_1. 我想找出哪些value在同一个id组中,并且在该id组下key都有它们。

这是一个例子:

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, value2id2, value2 id2, value3

你可以看到 all keyunderid1有一个值value2 并且 all keyunderid2有一个值value2and value3

4

1 回答 1

1

假设 (ID,KEY,VALUE) 形成一个唯一的组合,即每个 ID 每个 KEY 只有一个 VALUE 实例,这应该可以工作。

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;

我不清楚您期望的实际结果是什么,所以我只是对预测进行了猜测。

这个版本有效,这里有一个 SQL Fiddle 来证明它

于 2013-01-26T09:14:13.047 回答