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

グループ内の「中間」値の平均を取得するにはどうすればよいですか?

    分析関数を使用する別のオプション;

    SELECT group_id,
           avg( test_value )
    FROM (
      select t.*,
             row_number() over (partition by group_id order by test_value ) rn,
             count(*) over (partition by group_id  ) cnt
      from test t
    ) alias 
    where 
       cnt <= 3
       or 
       rn between floor( cnt / 2 )-1 and ceil( cnt/ 2 ) +1
    group by group_id
    ;
    

    デモ-> http://www.sqlfiddle.com/#!11/af5e0 / 59



    1. SQL-トリガー更新エラー

    2. OracleDatabaseのFORALLステートメントの概要

    3. BLOBを除くすべてのフィールドでSELECTDISTINCTを実行するにはどうすればよいですか?

    4. SQLの別の列で指定された共通値を持つタプルを抽出します