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

PostgreSQL:間隔「10日」と現在の行の間の範囲

    ROW_NUMBER()を使用して、各アイテムの過去10日以内の最新のレコードを引き出すことができます。

    SELECT * 
    FROM (
        SELECT
            DATE(datetime),
            item_id,
            price AS most_recent_price_within_last_10days,
            ROW_NUMBER() OVER(PARTITION BY item_id ORDER BY datetime DESC) rn
        FROM ...
        WHERE datetime > NOW() - INTERVAL '10 DAY'
    ) x WHERE rn = 1
    

    サブクエリでは、WHERE句が日付範囲のフィルタリングを行います。 ROW_NUMBER()は、同じitem_idを持つレコードのグループ内の各レコードにランクを割り当て、最新のレコードが最初になります。次に、外部クエリは行番号1のレコードをフィルタリングするだけです。



    1. OracleへのJDBC呼び出しは、3つの疑問符を返します

    2. MySqlのバックアップと復元

    3. 接続プール戦略:良い、悪い、または醜い?

    4. 挿入されたデータがphpmyadminデータベースに保存されていませんでした