2016-05-24 5 views
-1

私のデータベースに15年前のデータがあります。過去のすべての年の平均をとり、現在の年のデータと比較したいと思います。 年の列があり、現在の年を除外して現在の年を別々に表示している間にデータの平均を取るのに問題があります。クエリ内の行を除外します

EDIT:これは私がテーブル[年、番号]を持っているものであり、私のようなものを達成しようとしている[平均数(現在以外のすべての年)、数(現在の年)]

+0

既に試した質問を表示できますか? – Elen

+2

ここで要件を理解するのに問題があります。テーブルの構造、サンプルデータ、得ようとしている結果を共有できますか? – Mureinik

+0

申し訳ありませんが、私の質問でテーブルのような構造を作成するのに問題がありますが、これで十分であることを願っています。 – ybce

答えて

1

さて、あなたは疑問私は、実際のテーブル構造を見ることなく、あなたの作業クエリを構築することはできませんが、実際のテーブル/カラム名にあなたの自己それを調整することができ、多くの情報が欠けている:

SELECT t.YourComparingColumn as this_year,s.last_year 
FROM YourTable t 
CROSS JOIN(SELECT AVG(t1.YourComparingColumn) as last_year FROM YourTable t1 
      WHERE t1.year < year(now())) s 
WHERE t.year = year(now()) 

あなたがそれらをでグループ化された場合任意IDまたは何か:

SELECT t.id,t.YourComparingColumn as this_year,s.last_year 
FROM YourTable t 
INNER JOIN(SELECT t1.id,AVG(t1.YourComparingColumn) as last_year FROM YourTable t1 
      WHERE t1.year < year(now()) 
      GROUP BY t1.id) s 
ON(t.id = s.id) 
WHERE t.year = year(now()) 

年に1つ以上の行がある場合は、それらも合計する必要があります。

+0

情報の欠落についてごめんね、私はちょうど私の質問でテーブルのような構造を作成できませんでした編集をチェックし、それが理にかなっているかどうかを確認してください。私の主キーは2001年から2016年にかけて、2001年から2015年の平均を2016年のデータの横に表示したいと思っています。 – ybce

+1

これは私のクエリがあなたの構造に合わせて調整したものです。 – sagi

関連する問題