2017-06-14 12 views
3

私はSASで一部のSQLクエリを見直していると私は、次のクエリ構造遭遇:by group by distinctの冗長使用ですか?

SELECT A, B, Sum(C) FROM Table1 GROUP BY A, B; 

それとも私が欠けている場合:私は、それは厳密に同等だかどうかを知りたい

SELECT distinct A, B, Sum(C) FROM Table1 GROUP BY A, B; 

を出力のニュアンス、または計算の処理方法

+0

両方のクエリの結果はどうなりますか? –

+0

両方とも同じ結果が得られます。しかし、A + Bグループは既にユニークであるため、「別個の」は冗長です。おそらく、オプティマイザがそれに気付くでしょう。 –

+0

あなたはニュアンスを逃していません。明確な節は冗長であり、削除する必要があります。 –

答えて

4

2つのクエリは同等です。

は一般に、

SELECT DISTINCT a, b, c 
FROM <something> 

はあなたの場合

SELECT a, b, c 
FROM <something> 
GROUP BY a, b, c 

に相当し、<something>は、別個の列ABを有するGROUP BYクエリの結果であることを起こります。これは、トリプルA, B, SUM(C)が確実にユニークになるようにするのに十分です。