3

3つのフィールドを選択するための非常に単純なクエリ(Oracle 11g上)があります:

select field1, field2, field3, count(*) from table
where...
group by field1, field2, field3
having count(*) > 10;

ここで必要なのは、フィールド 1 と 2 だけをグループ化する必要があるため、「グループ化」から「フィールド 3」を除外することですが、出力にはフィールド 3 も必要です。私が知る限り、select のすべてのフィールドは「group by」でも報告する必要があるので、どうすればそれを処理できますか?

ありがとうルーカス

4

3 に答える 3

3
select t.field1, t.field2, t.field3, tc.Count
from table t
inner join (
    select field1, field2, count(*) as Count
    from table 
    where... 
    group by field1, field2 
    having count(*) > 10 
) tc on t.field1 = tc.field1 and t.field2 = tc.field2
于 2012-08-16T21:08:58.810 に答える
2

「count」関数の分析バージョンを使用します。

select * from (
select field1, field2, field3, count(*) over(partition by field1, field2) mycounter
from table ) 
--simulate the having clause
where mycounter > 10;
于 2012-08-19T15:53:41.020 に答える