Sql 结果集取决于列值的更改(以前的日期)
我有一个带有名称指示器的表和四列,每个月存储一次数据。现在我想分析数据。首先,我比较了大约一年(13个月)的一些值,发现我甚至需要一列的最后一个值的变化来决定应该采取哪种结果(这使得事情变得如此复杂) 以下是一年的SQL命令和部分结果集:Sql 结果集取决于列值的更改(以前的日期),sql,sqlite,Sql,Sqlite,我有一个带有名称指示器的表和四列,每个月存储一次数据。现在我想分析数据。首先,我比较了大约一年(13个月)的一些值,发现我甚至需要一列的最后一个值的变化来决定应该采取哪种结果(这使得事情变得如此复杂) 以下是一年的SQL命令和部分结果集: SELECT e.* FROM indicators AS e ORDER BY e.date DESC LIMIT 13 date interest_rate inflation_rate exchange_rate "2018-04
SELECT e.* FROM indicators AS e ORDER BY e.date DESC LIMIT 13
date interest_rate inflation_rate exchange_rate
"2018-04-02" 0.0 1.1 1.2321
[...]
"2017-04-03" 0.0 2.0 1.0691
当我发现intrest_rate列在结果集中没有最后一个更改值时,问题就出现了。在查看stackoverflow内部后,我看到了另一个SQL命令:
SELECT c.* FROM indicators AS c WHERE (c.date >=
( SELECT b.date FROM indicators AS b WHERE b.interest_rate <>
( SELECT a.interest_rate FROM indicators AS a WHERE b.date < a.date ORDER BY a.date DESC LIMIT 1 )
ORDER BY b.date DESC LIMIT 1 )
)
date interest_rate inflation_rate exchange_rate
"2016-03-01" 0.05 0.3 1.0888
"2016-04-01" 0.0 -0.2 1.1385
[...]
"2017-04-03" 0.0 2.0 1.0691
我想计算点数作为一项投资的指标。我被你想做的事情弄糊涂了。样本数据和期望的结果将非常有用。@Gordon Linoff:如果可以看到以前的利率,我添加了完整的结果集。所需的结果应该是查询最新的利率值以及至少最近13个月的利率值。这是我昨天的意图。
SELECT result1.* FROM
( SELECT c.* FROM indicators AS c WHERE (c.date >=
( SELECT b.date FROM indicators AS b WHERE b.interest_rate <>
( SELECT a.interest_rate FROM indicators AS a WHERE b.date < a.date ORDER BY a.date DESC LIMIT 1 )
ORDER BY b.date DESC LIMIT 1 )
)
) AS result1
UNION
SELECT result2.* FROM ( SELECT e.* FROM indicators AS e ORDER BY e.date DESC LIMIT 13) AS result2
date intr_r infl_r exchange_rate
"2016-03-01" "0.05" "0.3" "1.0888"
"2016-04-01" "0.0" "-0.2" "1.1385"
"2016-05-02" "0.0" "0.0" "1.1403"
"2016-06-01" "0.0" "-0.2" "1.1154"
"2016-07-01" "0.0" "-0.1" "1.1102"
"2016-08-01" "0.0" "0.1" "1.1113"
"2016-09-01" "0.0" "0.2" "1.1132"
"2016-10-04" "0.0" "0.2" "1.1161"
"2016-11-01" "0.0" "0.4" "1.0946"
"2016-12-01" "0.0" "0.5" "1.0635"
"2017-01-02" "0.0" "0.6" "1.0541"
"2017-02-01" "0.0" "1.1" "1.0755"
"2017-03-01" "0.0" "1.8" "1.0597"
"2017-04-03" "0.0" "2.0" "1.0691"
"2017-05-02" "0.0" "1.5" "1.093"
"2017-06-01" "0.0" "1.9" "1.1221"
"2017-07-03" "0.0" "1.4" "1.1412"
"2017-08-01" "0.0" "1.3" "1.1727"
"2017-09-01" "0.0" "1.3" "1.1825"
"2017-10-02" "0.0" "1.5" "1.1806"
"2017-11-01" "0.0" "1.5" "1.1638"
"2017-12-01" "0.0" "1.4" "1.1849"
"2018-01-02" "0.0" "1.5" "1.1993"
"2018-02-01" "0.0" "1.4" "1.2457"
"2018-03-01" "0.0" "1.3" "1.2214"
"2018-04-02" "0.0" "1.1" "1.2321"