在SQL查询中,统计、分组是经常会遇到的需求。小型的数据库如:Access,Sqlite 数据库,大型的数据库如:SQL Server,Oracle以及MySQL等等。本文将会给大家分享下如题所说的统计、分组查询:Sqlite按天分组查询每天的最后一条数据记录,首先我们来看一下数据表的示例数据:
首先,我们用SQL语句来创建示例表MyTemp
Name Quantity CreatedOn Name4 30 2015-11-01 20:30:00 Name7 15 2015-11-02 23:01:00
最后,我们结合需求写出统计每天的最后一条数据的SQL查询语句:
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按天统计出每天中的最后一条记录的时间。 最终的查询结果如我们上面预期所见:
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册