从DB获取每小时报告的记录

时间:2014-08-11 11:31:08

标签: android sql sqlite

我想根据时间从db获取销售记录。对于每小时,我必须计算总销售额。如何在 Sqlite 中执行此操作?

My_DB
{
sale_date,
sale_time,
tot_amt,
net_amt
}

我想在报告中显示详细信息,如:

01:00-02:00     totamt
02:00-03:00     totamt

2 个答案:

答案 0 :(得分:1)

小时位于时间戳的前两个字符中,因此您希望按以下方式分组:

SELECT substr(sale_time, 1, 2) AS hour,
       sum(tot_amt) as totamt
FROM My_DB
GROUP BY hour

数据库无法返回不存在的数据的结果,因此如果您想要所有小时的结果,则必须首先列出它们:

SELECT hour,
       (SELECT sum(tot_amt)
        FROM My_DB
        WHERE substr(sale_time, 1, 2) = hour)
FROM (SELECT '00' AS hour UNION ALL
      SELECT '01'         UNION ALL
      SELECT '02'         UNION ALL
      ...
      SELECT '22'         UNION ALL
      SELECT '23')

如果您希望为缺少的条目获取零而不是NULL,请使用total()而不是sum()

答案 1 :(得分:0)

SELECT SUM(tot_amt)
FROM My_DB
WHERE sale_time >= TIME('01:00:00.000') 
AND sale_time <= TIME('02:00:00.000')

使用IDE根据需要构建这些语句,并将TIME()函数中的值替换为您想要的值。如果您还需要日期,请另外使用AND sale_date = DATE('2014-08-11')