我有表friendbook_post
與屬性text
,id
,author
,type
,date_time
。 id
是主鍵,表中有很多條目。如何從另一個屬性中具有相同值的表中獲取第一個和最後一個值?
作者可以創建任意數量的帖子,即'author
'在多行中可以相同。
現在我想獲取每個作者根據date('date_time')
製作的第一個和最後一個post(text)
以及日期。
我想這很多查詢,但沒有得到預期的結果。
請幫我用oracle RDBMS。
我有表friendbook_post
與屬性text
,id
,author
,type
,date_time
。 id
是主鍵,表中有很多條目。如何從另一個屬性中具有相同值的表中獲取第一個和最後一個值?
作者可以創建任意數量的帖子,即'author
'在多行中可以相同。
現在我想獲取每個作者根據date('date_time')
製作的第一個和最後一個post(text)
以及日期。
我想這很多查詢,但沒有得到預期的結果。
請幫我用oracle RDBMS。
也許你想是這樣的:
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);
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
是一個可怕的名字。它沒有記錄是什麼樣的「日期時間」。刪除時間?發佈時間?發佈時間? 「最後更改的時間」?
刪除'mysql'標籤基於「幫我拿出甲骨文」 – 2014-11-01 13:07:18