2016-11-18 10 views
3

私は最初のフルタイムの仕事で約1週間SQLを使用していましたが、私は別々の列を組み合わせたクエリからいくつかの統計を計算しようとしていますテーブル。SQL:クエリから平均を計算する方法

具体的には、フィルタを適用した結合テーブル(または制約?私はSQL用語ではっきりしていない)から平均を計算しようとしています。

research on Googleをやってから、私は平均値を計算する方法を学びました:

SELECT AVG(column_name) 
FROM table_name 

私がいる問題は、これが唯一のデータベース内の既存のテーブルで動作するように思われることである新しいクエリで、私が作成していません。次のように

私のコードの簡易版である:

SELECT 
    Animal_Facts.Animal_Name, Animal_Facts.Prev_Reg_Amount, 
    Names.Given_Name, Animal_Class.Class_Description 
FROM 
    Names 
INNER JOIN 
    Animal_Facts ON Names.Name_Key = Animal_Facts.Name_Key 
INNER JOIN 
    Animal_Class ON Animal_Facts.Class_Key = Animal_Class.Class_Key 

このクエリは作成されます年金受給者などが所有Class_Descriptionは、動物がdesexedされているかどうかを記述する3つのテーブル、マイクロチップからの4つの列を結合し、そしてPre_Reg_Amount支払われた登録料です。

私は年金受給者が支払った平均料金を見つけたいので、私はテーブルをフィルタリングする次のコード行が含ま:

AND Animal_Class.Class_Description LIKE ('%pensioner%') 

をそして、私は追加の平均を計算する:

SELECT AVG(Animal_Facts.Prev_Reg_Amount) from Animal_Facts 

私の総コードは

SELECT 
    Animal_Facts.Animal_Name, Animal_Facts.Prev_Reg_Amount, 
    Names.Given_Name, Animal_Class.Class_Description 
FROM 
    Names 
INNER JOIN 
    Animal_Facts ON Names.Name_Key = Animal_Facts.Name_Key 
INNER JOIN 
    Animal_Class ON Animal_Facts.Class_Key = Animal_Class.Class_Key 
       AND Animal_Class.Class_Description LIKE ('%pensioner%') 

SELECT AVG(Animal_Facts.Prev_Reg_Amount) 
FROM Animal_Facts 

です。問題は、この計算をExce私は実際に年金受給者のデータの平均を取得するのではなく、すべてのデータの平均を取得しています。 SQLで作成したテーブルから直接平均(および他の統計)を計算する方法はありますか?

注:これらの統計情報はすべてExcelにエクスポートすることで計算できますが、時間がかかります。私はむしろSQLの中でこれを行う方法を学ぶだろう。

+0

SQLを使用する世界へようこそ。ここでは草が非常に緑色です。 – mendosi

+0

@mendosi - ありがとうございました! –

答えて

5
SELECT AVG(af.Prev_Reg_Amount) 
FROM 
    Animal_Facts af 
    INNER JOIN Animal_Class ac 
    ON af.Class_Key = ac.Class_Key 
    AND Class_Description LIKE ('%pensioner%') 
+0

ありがとうございました。間違いなく私には必要な番号があり、Excelを使用するよりもはるかに高速です。 –

+0

最初にテーブルを作成して統計を計算する方法はありますか(これはExcelのようなものです)、これは平均を計算する最良の方法ですか? –

+0

@BJJBAテーブルを作成できることを確かめてください。テーブルを作成するのと同時にグループ化したいものとする場合は、いくつかの異なるテクニックを使用する必要があります。ウィンドウ関数AVG()OVER()、CUBE、GROUPING SETをチェックしてください。 Excelはフロントエンドツールです。それは、テーブルと同時に統計を作成するのではなく、統計を作成するためにデータセットを使用します。 SQLクエリは、データセットを作成するようなもので、必要な機能を上に追加するだけです。したがって、上記のAVG()とSUM()が単にSELECT AVG()、SUM().....の後に別の計算列を作成したければ – Matt

関連する問題