这两天的工作涉及了一些数据整理,所以来一波好久不见的sql记录。
多次更新取最新时间的数据
在一组数据中,uuid相同的记录有多条,每一条的update_time不同,想取每一个uuid最后一条更新记录。
select t1.uuid, t1.update_time
from record t1
inner join (select t2.uuid, max(t2.update_time) as update_time
from record t2
group by t2.uuid) as t3
on t1.uuid = t3.uuid and t1.update_time = t3.update_time
取特定星期几的数据
用到的就是下面的语句,感谢internet。输出的星期一对应1,星期日对应0。
select extract(DOW FROM cast('2022-03-04 16:25' as TIMESTAMP)) weekday;
输出结果
对输出的特定字段增加条件
对于一些数据,如果当满足条件1输出一个结果,满足条件2输出另外的结果,可以利用case语句。
select uuid,
case
when count > 100 then 100
else count end,
update_time
from record
# count大于100,均输出100;否则输出本来记录的count
与特定时间间隔固定长度的数据
想要输出update_time是在publish_time三天后的数据。
select *
from record
where date_trunc('day', update_time) =
date_trunc('day', t1.publish_time) + interval '3 day'
#加号后面是时间间隔,可进行灵活调整。
新的一个月开始啦~ 最近的变化也很多,感觉不踏实...但是就是还在努力上进找方向呀~
自我记录,有错误欢迎指正~