【发布时间】:2015-08-25 11:49:17
【问题描述】:
我有这样的 sqlite 表:
CREATE TABLE "table" (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`param` REAL NOT NULL,
`date` INTEGER NOT NULL
);
INSERT INTO table (param , date) VALUES (123.3, 1427824800 );
INSERT INTO table (param , date) VALUES (122.3, 1427825800 );
INSERT INTO table (param , date) VALUES (125.0, 1427652000 );
INSERT INTO table (param , date) VALUES (123.9, 1427652900);
|id| param | date |
|==|=======|============|
| 1| 123.3 | 1427824800 |
| 2| 122.3 | 1427825800 |
| 3| 125 | 1427652000 |
| 4| 123.9 | 1427652900 |
并获取每天的最大日期行,例如(开始日和结束日之间)-我需要了解如何至少按天对其进行分组,但如果有任何方法可以通过自定义期间(周、月)进行分组会很棒
SELECT id, param, MAX(date) FROM table WHERE date BETWEEN 1427652000 AND 1427824799
SELECT id, param, MAX(date) FROM table WHERE date BETWEEN 1427824800 AND 1427911199
但实际上我获得了近一年的更多数据和 1000 多行数据,并且我认为 365 次查询不是一个选项,但我不知道如何优化它
UPD 毕竟我认为得到一个查询来得到这样的结果是真实的:
|id| param | date |
|==|=======|============|
| 2| 122.3 | 1427825800 |
| 4| 123.9 | 1427652900 |
【问题讨论】:
-
你试过
GROUP BY吗?另外,请编辑您的问题,以举例说明您期望的结果。 -
想要的输出是什么样的?
-
@rlanvin ,真的我不明白如何分组,是否可以通过“之间”进行分组?怎么样?
-
好的,看起来你需要这个:stackoverflow.com/questions/8154170/…
-
@rlanvin tnx 我之前检查过,然后再试一次,例如 SELECT id, param, max(date) FROM table GROUP BY if(date between 1427652000 and 1427911199, 0, 1) 并且没有这样的功能 If对于 sqlite 有“案例”尝试像 SELECT id, weight, max(date) FROM weight GROUP BY case WHEN date 在 1427652000 和 1427911199 之间然后 0 else 1 没有运气我做错了什么?