我的表friendbook_post
包含属性text
,id
,author
,type
,date_time
。 id
是主键,表中有许多条目。
作者可以发布任意数量的帖子,即“author
”可以在多行中相同。
现在我想根据post(text)
和日期来获取每个作者所做的第一个和最后一个date('date_time')
。
我正在尝试使用许多查询,但没有得到预期的结果。
请帮我解决oracle RDBMS。
答案 0 :(得分:1)
也许你想要这样的东西:
select fp.*
from friendbook_post fp join
(select fp.author, min(fp.id) as minid, max(fp.id) as maxid
from friendbook_post
group by fp.author
) a
on fp.author = a.author and fp.id in (a.minid, a.maxid);
答案 1 :(得分:1)
select id, text, author, type, date_time,
from (
select text, id, author, type, date_time,
row_number() over (partition by author order by date_time) as rn,
count(*) over (partition by author) as total_author_posts
from friendbook_post
) t
where rn = 1
or rn = total_author_posts;
或者,如果您希望返回同一个最大或最小日期的多个帖子:
select id, text, author, type, date_time,
from (
select text, id, author, type, date_time,
max(date_time) over (partition by author) as max_date,
min(date_time) over (partition by author) as min_date
from friendbook_post
) t
where date_time = max_date
or date_time = min_date;
顺便说一句:date_time
是一个可怕的名字。它没有记录什么样的日期时间"那是。删除时间?发布时间?出版时间? "最后改变了时间"?功能