查询以查找每周平均值

时间:2010-10-29 14:44:34

标签: sql sqlite

我有一个SQLite数据库,其中包含以下字段:

date (yyyymmdd fomrat)
total (0.00 format)

数据库中通常有2个月的记录。有没有人知道SQL查询来查找每周平均值?

我可以轻松执行:

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

然后将总数除以7,但除非在db中有7天可以被7整除,否则我认为它不会非常准确,特别是如果记录少于7天。

要获得每日摘要,这显然只是total / total_records。

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

4 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

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

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

答案 1 :(得分:0)

您的每周平均值是

daily * 7

显然,这不会考虑具体的周数,但您可以通过缩小日期范围内的结果集来实现这一目标。

答案 2 :(得分:0)

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

像这样(使用T-SQL):

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

这将每周返回一行。您可以在WHERE子句中对其进行过滤,以将其限制在给定的日期范围内。

希望这有帮助。

答案 3 :(得分:0)

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

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