当前位置: 首页 > 面试题库 >

SQLite查询要加入一定范围的日期?

欧阳勇
2023-03-14
问题内容

我正在使用SQLite。

假设我有一个sales带有两列的表格,datecount,以跟踪该日期我卖出了几杯柠檬水。如果我在某一天不卖柠檬水,那我会很沮丧以至于无法在sales表格中创建新的一行。

我想找出在给定日期范围内售出的平均眼镜数量。我可以发出这样的查询:

SELECT AVG(count) FROM sales WHERE date IS BETWEEN '2010-01-04' AND '2010-01-10';

但是,除非表中包含该范围内的所有日期,否则结果将不准确。我需要某种方法告诉SQLite将丢失的行计为零。

我想如果可以在某个日期范围内加入销售表,那将是理想的。这似乎是不可能的,因此从日期范围创建表的简单方法可能是下一个最好的方法。我不想修改销售表,这对于柠檬水摊来说似乎很愚蠢,但在现实生活中更有意义。

就像我在上面说的,我正在使用SQLite,因此如果您向我推荐其他数据库,对您没有帮助。就是说,如果您对其他数据库有更多的经验,并且认为您的解决方案可以在普通SQL中完成,那么我很乐意听到。


问题答案:

创建一个日历表并加入该表:

这样的事情会做:

create table dates (id integer primary key);
insert into dates default values;
insert into dates default values;
insert into dates select null from dates d1, dates d2, dates d3 , dates d4;
insert into dates select null from dates d1, dates d2, dates d3 , dates d4;
alter table dates add date datetime;
update dates set date=date('2000-01-01',(-1+id)||' day');

直到2287-05-20为止,您都可以使用。在dates表的date列中添加索引不会有任何问题。我的sqlite有点生锈,因此建议您参考该手册。

编辑: 索引代码:

create unique index ux_dates_date on dates (date);


 类似资料:
  • 问题内容: 如何在SQLite中高效地执行简单范围查询? 说,我有保存个人信息的数据,我想找到年龄在20到45岁之间,体重在50到80公斤之间的人? 我应该怎么做(例如设置某些索引?)以提高搜索效率? 问题答案: 我会尝试像 对“年龄”和“体重”字段建立索引将有助于加快查询速度。 这是有关在SQLite中建立索引的很好的概述:http : //www.tutorialspoint.com/sqli

  • 我的文档中有一个日期范围(使用日期对象)如下所示 我试图弄清楚如何构建一个查询来返回包含特定日期的所有事件,例如,像.... 如果查询显示类似这样的内容,但在Firestore查询限制下可能不可能出现这种情况。 因此,我一直在挠头几个小时,要么为此构建一个查询,要么以某种方式结构我的数据,以允许这样做。 这有可能吗?

  • 我需要帮助查询与日期范围的长收集。请参阅下面的示例文档。我想用日期范围查询startTime字段。

  • 我有一个lucene查询,可以对索引字段进行全文搜索。我想将日期范围添加到此查询。 我找到了这个问题并在那里使用了答案:如何在日期之间搜索(Hibernate搜索)? 但当我想在两个日期之间获取数据时,它什么也不返回。我使用的是MSSQL数据库,日期字段的类型是datetime。但它在实体类中被注释为。 这是我的实体类: 这就是我进行全文搜索的地方: 有两种不同的查询。一个是在指定字段上进行全文通

  • > 每个对象表示一个重复发生的事件。该事件可以在多个日期发生。因此,请考虑以下内容: 我有一个日历在客户端,用户可以选择一个日期范围。 > 对所选日期范围的每个条目进行调用,并在客户端处理聚合。问题是会有大量的读取,因为我们会多次读取重叠的日期范围内的同一个列表对象。 尝试使用类似ElasticSearch/Algolia的服务来完成此操作 任何建议都会很有帮助!

  • audit_modifier是VARCHAR2(30个字符),并且audit_modifier值以以下格式存储[2018-01-18T17:19:47.285z]。 从TO_DATE('2018-01-16','yyyy-mm-dd')和TO_DATE('2018-01-16','yyyy-mm-dd')之间的trunc(audit_modifier)的表中选择*; ORA-00932:不一致的数