Sqlite数据库数据多级分组查询的实现

问题场景

假设本地sqlite数据中存储有一批快递数据,现要按日期将这组数据进行分组显示日期及数量,然后第二层再按快递公司进行分组显示快递公司及相应的数量,最后再显示某家快递公司某天的明细。

问题分析

容易得知,这里会涉及到三个不同的需求,会产生三个列表数据,需要三个数据库查询操作方法。

解决方法

按日期数据分组汇总(最近7天的数据)

1
SELECT date(createTime,'unixepoch'),count(_id) FROM postExpressData GROUP BY date(createTime,'unixepoch') ORDER BY  createTime desc limit 7

按日期、公司数据分组汇总

1
SELECT companyId,companyName,count(_id) FROM postExpressData where date(createTime,'unixepoch')='2017-09-07'  GROUP BY companyId ORDER BY createTime desc

按日期、快递公司数据明细

1
SELECT expressId FROM postExpressData where date(createTime,'unixepoch')='2017-09-07' AND companyId='109' ORDER BY createTime desc

以上是实现需求的核心SQL语句,只需要执行即可。另外,”unixepoch”是对时间戳的解释,date再将时间戳转换为年月日日期。
SQLite 日期 & 时间