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

最も頻繁に表示される値を選択する方法は?

    select
      x.last_name,
      x.name_count
    from
      (select
        u.last_name,
        count(*) as name_count,
        rank() over (order by count(*) desc) as rank
      from
        users u
      group by
        u.last_name) x
    where
      x.rank = 1
    

    分析関数rankを使用します 。 count(*) descの順序に基づいて番号が割り当てられます 。 2つの名前が同じカウントを取得した場合、それらは同じランクを取得し、次の番号はスキップされます(したがって、ランク1、1、および3の行を取得する可能性があります)。 dense_rank 2つの行が同じランクになった場合に次の番号をスキップしない代替手段です(したがって、1、1、2を取得します)が、ランク1の行のみが必要な場合は、大きな違いはありません。 。

    行を1つだけにする場合は、各行に異なる番号を付ける必要があります。その場合は、row_numberを使用してください 。この小さいながらも重要な違いを除けば、これらの機能は類似しており、同じように使用できます。



    1. Codeigniterにネストされた結合

    2. PostgreSQL:データベースのバックアップとリカバリ?

    3. MySql-UTC形式のSELECTTimeStamp列

    4. datepicker日付をmysql日付に変換します