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

Oracleでグループの上位n個の要素を選択する

    これはあなたが求めているものですか?

    私のテスト設定:

    SQL> alter session set nls_date_format = 'DD-Mon-YYYY HH24:Mi:SS';
    
    Session altered.
    
    SQL> drop table so_test;
    
    Table dropped.
    
    SQL> create table so_test  (
      2    n varchar2(32)
      3  , v varchar2(32)
      4  , t date );
    
    Table created.
    
    SQL> 
    SQL> insert into so_test values ( 'X' , 'Test1', to_date('01-Jan-2011 12:00:00','DD-Mon-YYYY HH24:Mi:SS') );
    
    1 row created.
    
    SQL> insert into so_test values ( 'X' , 'Test2', to_date('01-Jan-2011 13:00:00','DD-Mon-YYYY HH24:Mi:SS') );
    
    1 row created.
    
    SQL> insert into so_test values ( 'X' , 'Test3', to_date('01-Jan-2011 14:00:00','DD-Mon-YYYY HH24:Mi:SS') );
    
    1 row created.
    
    SQL> insert into so_test values ( 'Y' , 'Test5', to_date('02-Jan-2011 12:00:00','DD-Mon-YYYY HH24:Mi:SS') );
    
    1 row created.
    
    SQL> insert into so_test values ( 'Y' , 'Test6', to_date('03-Jan-2011 12:00:00','DD-Mon-YYYY HH24:Mi:SS') );
    
    1 row created.
    
    SQL> insert into so_test values ( 'Y' , 'Test7', to_date('04-Jan-2011 12:00:00','DD-Mon-YYYY HH24:Mi:SS') );
    
    1 row created.
    
    SQL> 
    

    クエリは次のとおりです:

    SQL> select n,v,t from (
      2  select n, v , t , rank() over ( partition by n order by t desc) r
      3  from so_test
      4  ) where r <= 2;
    
    N                V                T
    -------------------------------- -------------------------------- --------------------
    X                Test3                01-Jan-2011 14:00:00
    X                Test2                01-Jan-2011 13:00:00
    Y                Test7                04-Jan-2011 12:00:00
    Y                Test6                03-Jan-2011 12:00:00
    
    SQL> 
    


    1. Elasticsearchを使用したDjangohaystackは、インデックスを再構築するときにデータベースを見つけることができません

    2. SQLクエリ:文字の長さで並べ替えますか?

    3. Dockerを使用すると、次のエラーが発生します:SQLSTATE[HY000][2002]そのようなファイルまたはディレクトリはありません

    4. MySQLで単語全体の一致を検索