- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 postgresql 数据库中进行查询,但我不知道如何进行查询。我有一个历史表,用于存储对象的状态、日期和其他数据。像这样:
id objectid date status ....
----------------------------
9 12 date1 2
8 12 date2 2
7 12 date3 2 <-- This is the date where the last status was set
6 12 date4 1
5 12 date5 1
4 12 date6 6
3 12 date7 6
2 12 date8 2
1 12 date9 2
我需要获取为系统中的所有对象 (objectid) 设置当前状态(每个对象的最后一组)的日期。所以在这个例子中(我只包含了对象 12 的信息来简化)如果它们按时间顺序排列(date9 是最旧的,date1 是最早的)当前状态是 2,我想得到 date3 这是母鸡这个状态是最后一次设置。请注意,状态 2 之前已设置,但随后更改为 6、1,然后再次更改为 2。我想获取当前间隔中的第一个日期。
谁能告诉我如何构造这个查询或要走的路?
谢谢。
UPDATE 根据@Unreason 的回答查询,这样它就可以连接到包含 objectid 引用的对象的表
SELECT objectid, max(date)
FROM (
SELECT objectid, status, date, lag(status) OVER window1, last_value(status) OVER window1 last_status
FROM historical
WINDOW window1 AS ( PARTITION BY objectid ORDER BY date)
) x
WHERE (status <> lag OR lag IS NULL)
AND status = last_status
GROUP BY objectid
最佳答案
有很多方法可以做到这一点,我想到了窗口函数
有点像
SELECT max(date)
FROM (
SELECT status, date, lag(status) OVER window1, last_value(status) OVER window1 last_status
FROM historical
WHERE objectid = 12
WINDOW window1 AS ( ORDER BY date)
) x
WHERE (status <> lag OR lag IS NULL)
AND status = last_status;
注意事项:
objectid = 12
),但可以对其进行修改以返回每个对象的最后状态的日期编辑
测试数据
CREATE TABLE historical (
id integer,
objectid integer,
date date,
status integer
);
INSERT INTO historical VALUES (1, 12, '2000-01-01', 2);
INSERT INTO historical VALUES (2, 12, '2001-01-01', 2);
INSERT INTO historical VALUES (3, 12, '2002-01-01', 6);
INSERT INTO historical VALUES (4, 12, '2003-01-01', 6);
INSERT INTO historical VALUES (5, 12, '2004-01-01', 1);
INSERT INTO historical VALUES (6, 12, '2005-01-01', 1);
INSERT INTO historical VALUES (7, 12, '2006-01-01', 2);
INSERT INTO historical VALUES (8, 12, '2007-01-01', 2);
INSERT INTO historical VALUES (9, 12, '2008-01-01', 2);
将来您可能想发布您的结果
pg_dump -t table_name --inserts
所以更容易设置测试用例
关于sql - 查询历史数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5323396/
我正在尝试实现此处建议的 redis 解决方案:http://www.slideshare.net/cacois/cois-palkostrata2013 : 这是目前为止我发现的最好的。 我有以下数
只是想知道您是否对关注有意见。 想象一下,我有一个简单的应用程序可以为客户存储发票。 简化发票表是: ID int, NUMBER varchar(20) CustomerID INT 客户数据是:
我正在尝试将 pandas 模块应用于我的代码,以便重新组织从 IB TWS 服务器收到的消息。 代码是 from ibapi.client import EClient from ibapi.wra
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
这个查询对我有用 select * from yahoo.finance.xchange where pair in ("EURUSD","GBPUSD") 可以在以下链接中看到: https://d
我正在尝试学习如何使用 Python、requests 和 BeautifulSoup 从 Coinmarketcap.com 网络抓取 BTC 历史数据。 我想解析以下内容: 1)日期 2)关闭 3
我有一个包含两列(Column_A 和 Column_B)的模型 (Model_A) 我的模型中有以下方法,两个基于 column_A 生成 column_B 的值 Class Model_A < A
让我们以关系数据库为例,例如MySQL。为了简单起见,我将专注于重要的事情:有一个包含订单的表,其中包含 order_id(主键)order_date 和外键 fk_supplier 等字段,引用表
我正在做一个快速的概念验证,以了解从 Google Analytics(分析)中提取历史数据以进一步用于离线数据拼接以生成数据及其分析的整体 View 的过程。我没有找到任何详细的在线文档来了解优缺点
我是一名优秀的程序员,十分优秀!