我想计算具有每日数据的变量的每个场地的月平均值。我的日期变量的数字格式为“YYYYMMDD”。 我的数据如下:
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 :(得分:1)
您应该将日期存储为日期而不是数字,而不管数据库是什么。无论如何,以下内容应该适用于任何数据库:
select floor(date / 100) as yyyymm, venue, avg(metric)
from t
group by floor(date / 100), venue;
答案 1 :(得分: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;
答案 2 :(得分:1)
试试这个:
SELECT SUBSTRING(DATE, 5,2) AS MONTH, VENUE, AVG (METRIC)
FROM TABLENAME
GROUP BY SUBSTRING(DATE, 5,2), VENUE
另外,我同意这里的每个人你应该将日期存储为日期值。