3

集計関数を使用した単純なクエリの DISTINCT は効果がありますか?

select DISTINCT salesperson, SUM(sales_amt) from sales GROUP BY salesperson

DISTINCT が影響を与える可能性のある、より複雑なクエリがあることを認識しています。

select salesperson, SUM(DISTINCT sales_amt) from sales GROUP BY salesperson

(プラットフォームによるその構文のサポートは異なる場合があります)

しかし、単純なクエリの例では、DISTINCT が冗長であることを確認したいと思います。

編集: 欠落している GROUP BY 営業担当者を修正

4

3 に答える 3

5

欠落していると仮定するとGROUP BY salesperson(group by を省略した場合、SQL Server では無効です)、DISTINCT最初のクエリでは冗長です。は、を集約することでGROUP BY効果的に実行します。DISTINCTsalesperson

select DISTINCT salesperson, SUM(sales_amt) from sales GROUP BY salesperson

そして、あなたが指摘したように、集約DISTINCT SUM()の配置が異なる行セットを生成する可能性があることを修正しています。

于 2012-04-09T17:39:37.077 に答える
2

SELECT DISTINCT [Col1], [Col2], ..., [ColN] FROM [Table]

と同じです:

SELECT [Col1], [Col2], ..., [ColN] FROM [Table] GROUP BY [Col1], [Col2], ..., [ColN]

DISTINCTafterはSELECT、「私のGROUP BYすべての列にしたいSELECT。だから、とにかくすでにグループが必要な場合は冗長だと思います(そこに集計関数を含める場合はそうします)。

于 2012-04-09T17:41:48.653 に答える
1

集計 (SUM()) を返すには group by が必要なため、作成したクエリは実行されません。次のようなものが必要です。

SELECT SalesPerson
, SUM(Sales_AMT) AS SalesAmount
FROM Sales 
GROUP BY SalesPerson
于 2012-04-09T17:42:34.597 に答える