sql - 选择按日期排序的分区的第一行和最后一行
问题描述
我需要编写一个查询来返回每个人选择的第一个和最后一个颜色。这是我的代码
Select t1.name,t1.color,min(t1.rnkmin) ,t2.color,max(t2.rnkmax)
From(
Select name,color,
Danse_rank() over(partition by name order by time asc) as rnkmin
From table 3) as t1 inner join (
Select name,color,
Danse_rank() over (partition by name order by date asc) as rnkmax
From table 3) as t2 on t1.name=t2.name
但遗憾的是我得到了一个错误,我不明白为什么谢谢你的帮助:)
解决方案
您可以使用row_number()
两次:
select color, name, time
from (
select
t.*,
row_number() over(partition by name order by time) rn_asc,
row_number() over(partition by name order by time desc) rn_desc
from mytable t
) t
where rn_asc = 1 or rn_desc = 1
如果您希望两种颜色在同一条记录中,那么您可以聚合:
select
name,
max(case when rn_asc = 1 then color end) as first_color
max(case when rn_desc = 1 then color end) as last_color
from (
select
t.*,
row_number() over(partition by name order by time) rn_asc,
row_number() over(partition by name order by time desc) rn_desc
from mytable t
) t
where rn_asc = 1 or rn_desc = 1
group by name
推荐阅读
- android - Firestore 合并 2 个查询并使用 OR 查询
- django - 将 utf-8 渲染为 Django HTML 中的标签
- wget - 在找到文件时中止 wget (Windows)
- regex - Angular 5 正则表达式匹配任何 Unicode 字母
- angularjs - @firebase/database:FIREBASE 警告:用户回调抛出异常。TypeError:无法读取未定义的属性“myID”
- vuetify.js - Vuetify flexibleAndCard 全高带滚动
- stream - PyPDF2:它可以更新数据流吗?
- regex - 在 Safari 中通过正则表达式进行输入验证
- python - Python psswrd 生成器:长度和数字
- java - 从生产者/消费者模型中的文件读取