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

SQLite 2015-11-12 1945浏览 收藏本文

在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数据库按天分组统计查询表中每天的最后一条数据记录

验证码