SQLite中的按范围分组
我有一个SQLite表,其中包含一个数字字段名称。我需要按此列的范围分组,如下所示:选择CASTfield_name/100作为INT,从表中选择COUNT*groupby CASTfield_name/100作为INT,但包括没有值COUNT的范围应该是0。我不知道如何执行这样的查询?您可以通过使用联接和一个额外的表来实现这一点 额外的表将包含您希望在查询响应中为其设置行的每个值。这不仅可以将缺少的CASTfield_name/100作为返回值之间的INT值进行填充,还可以将其展开,以便如果当前组为5、6、7,则可以包含0到10 在其他类型的SQL中,您将能够进行右连接或完全外部连接,并且您已经在路上了。唉 因此,我们将使用交叉连接将所有内容连接到所有内容,然后进行筛选。如果你有一个相对较小的数据库或少量的组,你的状态就很好。如果两者都有大量数据,这将是一种非常密集的方法,交叉连接结果将包含组行的rowsofdata*,所以请注意 例如: 表:用于报告的组SQLite中的按范围分组,sqlite,group-by,range,Sqlite,Group By,Range,我有一个SQLite表,其中包含一个数字字段名称。我需要按此列的范围分组,如下所示:选择CASTfield_name/100作为INT,从表中选择COUNT*groupby CASTfield_name/100作为INT,但包括没有值COUNT的范围应该是0。我不知道如何执行这样的查询?您可以通过使用联接和一个额外的表来实现这一点 额外的表将包含您希望在查询响应中为其设置行的每个值。这不仅可以将缺少的CASTfield_name/100作为返回值之间的INT值进行填充,还可以将其展开,以便如果当
desired_group
-------------
0
1
2
3
4
5
6
表:数据
fieldname other_field
--------- -----------
250 somestuff
230 someotherstuff
600 stuff
您可以使用如下查询
select groups_for_report.desired_group, count(data.fieldname)
from data
cross join groups_for_report
where CAST(fieldname/100.0 AS INT)=desired_group
group by desired_group;
如果我在表中有几百万行和数千个组呢?那么你必须创建这数千个组。在读取SQL结果的代码中检测“缺失”组可能更容易。。。如果您仅限于SQLite,那么这并没有多大帮助,但如果您转向更健壮的后端,则值得考虑。