2017-05-11 107 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

存儲日期爲相應的日期類型,而不是數字。 – Donnie

回答

1

你應該存儲日期爲日期不是數字,無論數據庫。在任何情況下,類似於下面的東西應該在任何數據庫工作:

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

假設你正在使用PostgreSQL:

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

試試這個:

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

而且,我同意與你身邊的每個人都應該存儲日期作爲日期值。

+0

對不起,它被保存爲日期。我對SQL很陌生。無論如何,我試過「選擇年份(日期),月份(日期),公制......」但出現錯誤:「錯誤:函數年(日期)不存在 LINE 1:SELECT year(date)as year,month(date)as month,market_id,... ^ 提示:沒有函數會與給定的名稱和參數類型匹配,您可能需要添加明確的類型轉換 **********錯誤**********「 – duckman

+1

看看http://stackoverflow.com/questions/36869703/extract-month-from-date-field,看看是否可以幫助你從日期字段中提取月份。 – SandPiper