我们如何查询一组记录以获取特定日期的数据,而这些日期中可能存在间隔。
示例数据
date | Price
------------------
2018-03-31 | 115
2018-03-29 | 114
2018-03-28 | 113
...
2017-03-29 | 117
2017-03-28 | 118
...
2016-12-30 | 143
2016-12-29 | 140
...
2015-12-31 | 110
2015-12-30 | 111
日期必需数据:2018-03-31、2017-03-31、2016-12-31、2015-12-31
date | Price
------------------
2018-03-31 | 115
2017-03-31 | 117
2016-12-31 | 143
2015-12-31 | 110
答案 0 :(得分:2)
您可以使用相关子查询来执行此操作。以下内容将返回确切日期或最接近的先前日期的价格:
(mix) lib/mix.ex:323: Mix.raise/1
lib/mix/tasks/compile.make.ex:100: Mix.Tasks.Compile.ElixirMake.run/1
(mix) lib/mix/task.ex:316: Mix.Task.run_task/3
(mix) lib/mix/tasks/compile.all.ex:68: Mix.Tasks.Compile.All.run_compiler/2
(mix) lib/mix/tasks/compile.all.ex:52: Mix.Tasks.Compile.All.do_compile/4
(mix) lib/mix/tasks/compile.all.ex:23: anonymous fn/1 in Mix.Tasks.Compile.All.run/1
(mix) lib/mix/tasks/compile.all.ex:39: Mix.Tasks.Compile.All.with_logger_app/1
(mix) lib/mix/task.ex:316: Mix.Task.run_task/3
答案 1 :(得分:1)
您可以使用MySQL Last day函数和date_format获得所需的结果。查看查询:-
select last_day(a11.d_date), a11.price
from test a11
join
(select MAX(d_date) d_date, DATE_FORMAT(d_date, "%M %Y")
from test
group by DATE_FORMAT(d_date, "%M %Y")
) a12
on a11.d_date = a12.d_date
答案 2 :(得分:0)
似乎您需要年份的最高价格
select max(date), max(price)
from my_table m
inner join (
select max(date), year(date) my_year
from my_table
group by year(date)
) t on t.my_year = year(m.date)
group by year(m.date)