2017-05-11 39 views
0

毎日のデータを持つ変数の会場ごとの月間平均を計算したいと思います。私の日付変数には、 "YYYYMMDD"という数値形式があります。 私のデータは次のようになります。SQL:月ごとの平均

date  venue metric 
20150203 1  0.78 
20150204 1  0.65 
20150205 1  0.90 
20150206 1  0.40 
20150203 2  0.74 
20150204 2  0.77 
20150205 2  0.88 
20150206 2  0.64 
20150203 3  0.78 
20150204 3  0.92 
20150205 3  0.94 
20150206 3  0.60 
+0

どのデータベースタイプですか? – maSTAShuFu

+0

日付を数値からvarchar(8)にキャストする...日付関数は私の場合は年月を正確に表すことができるはずです...そうでなければカルチャ/地域を適用します – maSTAShuFu

+2

数字を適切な 'date'型として格納します。 – Donnie

答えて

1

あなたは関係なく、データベースの日付ないとして数字、として日付を格納する必要があります。私は同意し、また

SELECT SUBSTRING(DATE, 5,2) AS MONTH, VENUE, AVG (METRIC) 
FROM TABLENAME 
GROUP BY SUBSTRING(DATE, 5,2), VENUE 

:これを試してみてください

SELECT 
    month, 
    venue, 
    AVG(metric) 
FROM (
    SELECT 
     EXTRACT(MONTH FROM TO_DATE(CAST(your_date_field AS TEXT), 'YYYYMMDD')) AS month, venue, metric 
    FROM 
     your_table 
    ) AS sub 
GROUP BY 
    month, venue; 
1

:いずれの場合では、次のようなものは、任意のデータベースで動作するはずですここにいる皆さんは日付を日付値として保存する必要があります。

1

:あなたは、PostgreSQLを使用していると仮定すると

select floor(date/100) as yyyymm, venue, avg(metric) 
from t 
group by floor(date/100), venue; 
+0

はい、申し訳ありませんが、日付として保存されています。私は非常にSQLの新しいです。とにかく、「選択年(日付)、月(日付)、メトリック......」を試しましたが、エラーが発生しました: "エラー:関数年(日付)が存在しません 行1: ... ^ ヒント:指定された名前と引数の型に一致する関数はありません。明示的な型キャストを追加する必要があります。 **********エラー********** " – duckman

+1

http://stackoverflow.com/questions/36869703/extract-month-from-date-fieldを見て、それがあなたの日付フィールドから月を抽出するのに役立つかどうかを見てください。 – SandPiper