Запрос, чтобы найти среднее значение за неделю - PullRequest
1 голос
/ 29 октября 2010

У меня есть база данных SQLite со следующими полями, например:

date (yyyymmdd fomrat)
total (0.00 format)

В базе данных обычно 2 месяца записей. Кто-нибудь знает запрос SQL, чтобы найти среднее значение за неделю?

Я мог бы просто выполнить:

SELECT COUNT(1) as total_records, SUM(total) as total FROM stats_adsense

Тогда просто разделите итоговое значение на 7, но если в БД не будет ровно x дней, которые делятся на 7, я не думаю, что это будет очень точно, особенно если записей меньше 7 дней.

Чтобы получить ежедневную сводку, это, очевидно, просто total / total_records.

Может кто-нибудь помочь мне с этим?

Ответы [ 4 ]

2 голосов
/ 29 октября 2010

Вы можете попробовать что-то вроде этого:

SELECT strftime('%W', thedate) theweek, avg(total) theaverage 

FROM table GROUP BY strftime('%W', thedate)

0 голосов
/ 29 октября 2010

Вы должны будете опустить те записи в дополнении, которые не относятся к полной неделе. Таким образом, перед суммированием вам нужно найти минимальное и максимальное значения дат, манипулировать ими так, чтобы они составляли «целые» недели, а затем выполнить исходный запрос с WHERE, который ограничивает значения даты согласно новым спектр. Может быть, вы даже можете поместить все это в один запрос. Я оставлю это на ваше усмотрение. ; -)

Те значения, которые «усечены», тогда не используются, очевидно. Если не хватает значений на неделю, результата нет вообще. Но, видимо, решения для этого нет.

0 голосов
/ 29 октября 2010

Я не уверен, как будет работать синтаксис в SQLite, но один из способов - разобрать части даты каждого поля [date], а затем указать, какие границы WEEK и DAY в предложении WHERE, а затем GROUP byнеделя.Это даст вам истинное среднее значение независимо от того, есть строки или нет.

Примерно так (с использованием T-SQL):

SELECT  DATEPART(w, theDate), Avg(theAmount) as Average
FROM    Table
GROUP BY DATEPART(w, theDate)

Это будет возвращать строку для каждой недели.Вы можете отфильтровать его в предложении WHERE, чтобы ограничить его указанным диапазоном дат.

Надеюсь, это поможет.

0 голосов
/ 29 октября 2010

Ваш средний недельный

daily * 7

Очевидно, что это не учитывает определенные недели, но вы можете получить это, сузив набор результатов в диапазоне дат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...