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

array_agg /前のすべての位置の中央値、LAST_10、LAST_50(現在の位置を除く)を使用してテーブルをクエリします

    Postgresには、MEDIANの組み込み関数がありません。 。ただし、 Postgres wikiで利用可能な関数スニペットを使用して作成できます。 。このスニペットは、ulib_aggユーザー定義ライブラリ の一部でもあります。 。

    作成したら、SUMなどの集計関数と同じように使用できます。 またはSTRING_AGG 同様のwindow 仕様。 Postgresには、複数のwindowを指定するオプションがあります。 コンマで区切られた集計関数の定義。

    したがって、MEDIANを取得するには 以前の20レコードのうち、ウィンドウはこのクエリのように定義できます。

    SELECT 
    j.* ,  array_agg(position) over w as previous_positions,
           median(position)    over w_20 as med_20
      FROM jockeys j
    WINDOW w as
    (  partition by name ORDER BY id rows between 
         unbounded preceding and 1 preceding
         ),
         w_20 as
         (  partition by name ORDER BY id rows between 
               20 preceding and 1 preceding
         )
    

    その上、ROUNDを適用できます 10進数を切り捨てる場合に機能します。

    デモ




    1. ORACLEDBからSASを介してblobをインポートします

    2. MariaDBでのSHOWCOLLATIONの仕組み

    3. MySQLで自動インクリメントを使用した複合キーの定義

    4. リンクサーバーのOLEDBプロバイダーMicrosoft.Jet.OLEDB.4.0のインスタンスを作成できませんnull