号外号外: 原[图享网]更名为 码友网(codedefault.com) 啦,感谢大家一路上的陪伴与支持。代码的世界里,码友网与大家一起同行!

Sqlite数据库按天分组统计查询表中每天的最后一条数据记录

SQLite 作者: Rector 2931阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

在SQL查询中,统计、分组是经常会遇到的需求。小型的数据库如:Access,Sqlite 数据库,大型的数据库如:SQL Server,Oracle以及MySQL等等。本文将会给大家分享下如题所说的统计、分组查询:Sqlite按天分组查询每天的最后一条数据记录,首先我们来看一下数据表的示例数据: 首先,我们用SQL语句来创建示例表MyTemp
CREATE TABLE MyTemp(
Name VARCHAR,
Quantity INTEGER,
CreatedOn DATETIME
)
其次,用INSERT INTO向示例表MyTemp中批量插入数据:
INSERT INTO MyTemp (Name,Quantity,CreatedOn) VALUES ('Name1',20,'2015-11-01 01:01:00');
INSERT INTO MyTemp (Name,Quantity,CreatedOn) VALUES ('Name2',25,'2015-11-01 10:30:00');
INSERT INTO MyTemp (Name,Quantity,CreatedOn) VALUES ('Name3',24,'2015-11-01 12:35:00');
INSERT INTO MyTemp (Name,Quantity,CreatedOn) VALUES ('Name4',30,'2015-11-01 20:30:00');
INSERT INTO MyTemp (Name,Quantity,CreatedOn) VALUES ('Name5',28,'2015-11-02 01:00:00');
INSERT INTO MyTemp (Name,Quantity,CreatedOn) VALUES ('Name6',63,'2015-11-02 12:20:00');
INSERT INTO MyTemp (Name,Quantity,CreatedOn) VALUES ('Name7',15,'2015-11-02 23:01:00');
在准备好数据之后,我们的预期需求结果是:
  Name                       Quantity                            CreatedOn Name4                      30                                     2015-11-01 20:30:00 Name7                      15                                     2015-11-02 23:01:00
  最后,我们结合需求写出统计每天的最后一条数据的SQL查询语句:
SELECT A.Name,A.Quantity,A.CreatedOn
  FROM  
  MyTemp AS A 
  JOIN (SELECT MAX(X.CreatedOn) 'MaxTimeStamp' 
            FROM MyTemp AS X 
            GROUP BY DATE(X.CreatedOn)) AS T ON T.MaxTimeStamp=A.CreatedOn
以上的SQL查询语句中使用了JOIN连接查询以及GROUP BY的分组统计查询,其中GROUP BY 的主要作用是结合MAX按天统计出每天中的最后一条记录的时间。 最终的查询结果如我们上面预期所见: sqlite-query-last-data-each-day

阅读了该文章的人还浏览了...

本文永久链接码友网 » Sqlite数据库按天分组统计查询表中每天的最后一条数据记录

发布于: 2015-11-12 20:21:36
分享扩散:

文章评论

获取验证码