sql >> データベース >  >> RDS >> Oracle

SQLで日付ごとに特定の値を持つ最新の2行を取得する方法

    編集 同じvarchar2の重複する日付値をカウントしないように更新されました 。

    RANK()を置き換えました DENSE_RANK()を使用 連続するランクを割り当ててから、distinctを使用するようにします。 重複を排除します。

    DENSE_RANK()<を使用できます。 / a>

    SELECT DISTINCT TXT, ENTRY_DATE
      FROM (SELECT txt,
                   entry_date,
                   DENSE_RANK () OVER (PARTITION BY txt ORDER BY entry_date DESC)
                      AS myRank
              FROM tmp_txt) Q1
     WHERE Q1.MYRANK < 3
    ORDER BY txt, entry_date DESC
    

    入力:

    txt | entry_date
    
    xyz | 03/11/2014
    xyz | 25/11/2014
    abc | 19/11/2014
    abc | 04/11/2014
    xyz | 20/11/2014
    abc | 02/11/2014
    abc | 28/11/2014
    xyz | 25/11/2014
    abc | 28/11/2014
    

    結果:

    txt | entry_date
    
    abc | 28/11/2014
    abc | 19/11/2014
    xyz | 25/11/2014
    xyz | 20/11/2014
    



    1. ユーザーが参加しなかった最近のスレッドを取得する

    2. mysqlshow各行の他のテーブルの行数

    3. NetBeans 9.0、パート2のJava9でJShellを使用する

    4. MySQL:1つの列から値を含む複数の行を選択します