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

ウィンドウ関数を使用して、HiveまたはPostgresでさまざまなタスクを実行するタイミングを決定するにはどうすればよいですか?

    Postgresのソリューションは、generate_series()をサポートしているため、かなり簡単です。 。まず、テーブルの各行について、1日あたり1行のデータを展開します。

    select d.*, gs.dy
    from data d, lateral
         generate_series(start_day, end_day) gs(dy);
    

    次に、集計して毎日のタスクを取得します。

    select d.person, d.dy, max(d.task_key) as task_key
    from (select d.*, gs.dy
          from data d, lateral
               generate_series(start_day, end_day) gs(dy)
         ) d
    group by d.person, d.dy;
    

    その後、再集計できますが、元の行を「分割」している可能性があるため、これには注意が必要です(私のコメントを参照)。これにより、どのタスクをどの日に実行するかについての質問に答えます。

    これらはすべて、横方向の結合やgenerate_series()なしで実行できます。 数値/集計表を使用します。




    1. SQL Serverデータベース呼び出しを使用したマルチスレッドC#アプリケーション

    2. plsqlプロシージャからSQLスクリプトを実行する方法

    3. MySQL、REGEXP-次の正確な文字のみを含む単語を検索します

    4. SQLNonTransientConnectionExceptionEclipseでのMySQLとの接続