我正在使用 MariaDB 并且我有这些类型的数据:
我还有三月的数据,我正在使用此查询从数据库中选择不同的月份:
select distinct(DATE_FORMAT(DT,'%m-%Y')) AS singleMonth FROM myTable
我希望能够为每个月选择 P2 列的第一个和最后一个记录。如何使用上面的查询获取所有不同的月份并获取该月和最后一个月的第一条记录?
示例查询应该返回的样子:
答案 0 :(得分:1)
您可以使用窗口函数和条件聚合:
select year(dt), month(dt),
min(case when seqnumn_asc = 1 then p2 end) as first_p2,
min(case when seqnumn_desc = 1 then p2 end) as last_p2
from (select t.*,
row_number() over (partition by year(dt), month(dt) order by dt asc) as seqnum_asc,
row_number() over (partition by year(dt), month(dt) order by dt desc) as seqnum_desc
from t
) t
group by year(dt), month(dt);