exampeは、自己説明する必要があります:DISTINCTの結果の上にGROUPを適用
SQL> create table testDistinct (col1, col2) as(
2 select 1, 100 from dual union all
3 select 1, 10 from dual union all
4 select 1, 10 from dual union all
5 select 2, 50 from dual union all
6 select 3, 1 from dual union all
7 select 3, 100 from dual
8 );
Table created.
SQL> select col1, avg(col2)
2 from testDistinct
3 group by col1;
COL1 AVG(COL2)
---------- ----------
1 40
2 50
3 50,5
SQL> select DISTINCT col1, avg(col2)
2 from testDistinct
3 group by col1;
COL1 AVG(COL2)
---------- ----------
1 40
2 50
3 50,5
ができます:あなたがcol1` BY `GROUPを行うので
SQL> select col1, avg(col2)
2 from (
3 select DISTINCT col1, col2
4 from testDistinct
5 )
6 group by col1;
COL1 AVG(COL2)
---------- ----------
1 55
2 50
3 50,5
を、' DISTINCT'は冗長です結果はすでに異なっています。 – jarlh
jarlhさんのコメントで拡大:GROUP BYはSELECTの前に処理されます。ですから、この例を変更して、問題が解決されないようにすることはできません。質問は、どのようにクエリを書き直しても問題ありません。GROUP BYが最初に処理され、GROUP BY列のみがSELECTに含まれることができます(どちらの時点でもDISTINCTになっています)。 – mathguy
@jarlh Col1でグループ化すると、col1でグループ化するだけではありませんか?だから、この場合col2はまだ複数の複製を持つことができますか?私の質問は、SELECTにDISTINCTを指定しても、col2内の重複には何の影響もありません。チェックありがとう! – maverick