使用SQLite查找查询中行的差异
发布时间:2020-12-12 23:40:36 所属栏目:百科 来源:网络整理
导读:我有一个SQLite表,其中包含各种产品的价格.它是一个快照表,因此它包含5分钟间隔的价格.我想写一个查询,将每个项目的价格差异从一行返回到下一行. 列是id(自动公司),record_id(产品的ID),价格(该时间点的价格),时间(自纪元以来仅几秒) 我正在尝试返回一个“差
我有一个SQLite表,其中包含各种产品的价格.它是一个快照表,因此它包含5分钟间隔的价格.我想写一个查询,将每个项目的价格差异从一行返回到下一行.
列是id(自动公司),record_id(产品的ID),价格(该时间点的价格),时间(自纪元以来仅几秒) 我正在尝试返回一个“差异”列,其中包含间隔之间的差异值. Given the following id record_id price time 1 apple001 36.00 ... 67 apple001 37.87 ... 765 apple001 45.82 ... 892 apple001 26.76 ... I'd like it to return id record_id price time difference 1 apple001 36.00 ... 0 67 apple001 37.87 ... 1.87 765 apple001 45.82 ... 7.95 892 apple001 26.76 ... -19.06 是否可以使用SQLite? 其次,如果可能的话 – 是否有办法将其限制在最后5个左右的记录中? 我很感激任何帮助,谢谢. 只想添加一些东西.我已经找到了在其他数据库中这样做的方法,但我使用的是XULRunner,因此也就是SQLite.这就是我正在使用它的原因. 第二个问题可能需要澄清,我希望按时间顺序排序并分析最后5条记录.如果需要,这是我可以单独解决的问题. 这是一个MySQL solution,有点像.这是我正朝着的方向,但交易破坏者是“如果表格包含一个序列列,但有间隙,重新编号.如果表格中没有这样的列,请添加一个”.根据设计,这种情况存在差距,因为有许多记录一次更新而且不会按顺序更新. 我不知道SQLite中是否存在一些限制,但您可以尝试以下在Sql Server中使用的语句.如果时差是恒定的(你说它是5分钟),你可以写: SELECT A.id,A.record_id,A.price,A.time,ISNULL(A.price - B.price,0) AS difference FROM Table1 as A LEFT OUTER JOIN Table1 B ON A.record_id = B.record_id AND A.time - B.time = 5 除此以外 SELECT A.id,0) AS difference FROM Table1 as A LEFT OUTER JOIN Table1 B ON B.record_id = A.record_id AND B.time = (SELECT MAX(time) FROM Table1 C WHERE C.time < A.time AND C.record_id = A.record_id) 没有连接的语句如下 SELECT id,record_id,price,time,(SELECT A.price - B.price FROM Table1 as B WHERE B.record_id = A.record_id AND B.time = (SELECT MAX(time) FROM Table1 C WHERE C.time < A.time AND C.record_id = A.record_id)) AS difference FROM Table1 as A 我希望他们中的一个会帮助你. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |