2010-10-29 137 views
1

我有例如以下领域的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天,通过在DB 7整除的,我不认为这将是非常准确的,尤其是如果有少于7天的记录。

要得到每日总结,显然只是total/total_records。

任何人都可以帮我解决这个问题吗?

回答

0

您每周平均为

daily * 7 

显然,这并不需要在考虑到具体的星期,但你可以通过缩小结果的日期范围设置获取。

0

我不确定语法如何在SQLite中工作,但一种方法是解析出每个[日期]字段的日期部分,然后指定WHERE子句中的哪些WEEK和DAY边界,然后指定GROUP由一周。无论是否有行,这将给你一个真正的平均值。

这样的事情(使用T-SQL):

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

这将返回一排每星期。你可以在你的WHERE子句中过滤它,以限制它到一个给定的日期范围。

希望这会有所帮助。

2

你可以尝试这样的事:

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

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

0

你必须在不属于一个完整的星期除了省略了这些记录。因此,在总结之前,您必须找到日期的最小值和最大值,对它们进行操作以使它们形成“整个”周,然后使用WHERE运行原始查询,以便根据新的值限制日期值范围。也许你甚至可以把所有这一切放到一个查询中。我会留给你的。 ;-)

显然,那些被“截断”的值没有被使用。如果一周内没有足够的价值,那么根本没有结果。但显然没有解决方案。