2014-11-01 39 views
0

我有表friendbook_post與屬性text,id,author,type,date_timeid是主鍵,表中有很多條目。如何從另一個屬性中具有相同值的表中獲取第一個和最後一個值?

作者可以創建任意數量的帖子,即'author'在多行中可以相同。

現在我想獲取每個作者根據date('date_time')製作的第一個和最後一個post(text)以及日期。

我想這很多查詢,但沒有得到預期的結果。

請幫我用oracle RDBMS。

+0

刪除'mysql'標籤基於「幫我拿出甲骨文」 – 2014-11-01 13:07:18

回答

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
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是一個可怕的名字。它沒有記錄是什麼樣的「日期時間」。刪除時間?發佈時間?發佈時間? 「最後更改的時間」?

相關問題