PostgreSQL のウィンドウ関数による行の比較
PostgreSQL では、ウィンドウ関数は、現在の行と隣接する行を比較するための強力なツールを提供します。前か次か。隣接する行との比較に基づいて結果を取得するには、lag() や lead() などのウィンドウ関数を効果的に使用できます。
例: 偶数間の奇数の検索
位置とランダム番号の 2 つの列があるテーブルを考えてみましょう。偶数に挟まれた奇数を取得するには、次のようにウィンドウ関数を利用できます:
SELECT random_number FROM ( SELECT random_number, lag(random_number, 1) OVER w AS previous_number, lead(random_number, 1) OVER w AS next_number FROM table_name WINDOW w AS (PARTITION BY position ORDER BY position) ) subquery WHERE random_number % 2 = 1 AND previous_number % 2 = 0 AND next_number % 2 = 0;
実際の使用法: 文脈上の単語の識別
同様に、特定のカテゴリ (名前など) に属さないが、カテゴリに属する単語に囲まれた単語を見つけることが目的の単語分析の場合、同じアプローチを使用できます。適用:
SELECT text FROM ( SELECT text, category, lag(category, 1) OVER w AS previous_category, lead(category, 1) OVER w AS next_category FROM token JOIN text_block_has_token ON token_id = id WINDOW w AS (PARTITION BY text_block_id, sentence ORDER BY position) ) subquery WHERE category <> 'NAME' AND previous_category = 'NAME' AND next_category = 'NAME';
ウィンドウ関数の主な利点
行を動的に比較するためにウィンドウ関数を使用すると、次のような利点があります。
以上がPostgreSQL ウィンドウ関数はどのようにして行を比較し、隣接するデータのパターンを特定できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。