SQLite在排除某些小时数时按天选择平均值

时间:2015-11-25 18:15:14

标签: sqlite

我有一些代码可以选择像这样的列表中的平均日期:

2015-11-09 09:45:34.038000 | 10
2015-11-09 10:00:34.039000 | 5

所以,如果那些只有两个条目11-09将是7.5。我的SQLite查询有效,但我有另一个皱纹,我想补充一下。以下是我到目前为止的情况:

queryCurs.execute('''select strftime('%m-%d-%Y', date), round(Avg(number),2) from tableA join tableB on tableB.name = tableA.name   where place like ? group by strftime('%m-%d-%Y', date)''', (list[i],))

这很有效。但是,我想只包括8a和8p之间的条目。我如何将那些落在该范围内的东西排除在我的平均值之外?

1 个答案:

答案 0 :(得分:1)

使用time() function从时间戳中提取时间,然后对其进行过滤。 (提取日期的简单方法是使用date()函数。)

SELECT strftime('%m-%d-%Y', date),
       round(Avg(number),2)
FROM tableA
JOIN tableB USING (name)
WHERE place LIKE ?
  AND time(date) BETWEEN '08:00:00' AND '20:00:00'
GROUP BY date(date)