大規模なデータベースがあり、新しいフィールドを更新するためのロジックを実行したいと考えています。
主キーはid
テーブルharvard_assignees用です
ロジックはこのようになります
- に基づいてすべてのレコードを選択します
id
- 各レコード(WHILE)について、
if (state is NOT NULL && country is NULL), update country_out = "US" ELSE update country_out=country
ステップ1をPostgreSQLクエリとして、ステップ2を関数として見ています。正確な構文でネイティブに実装する最も簡単な方法を見つけようとしているだけです。
==== 2番目の関数はもう少し興味深いもので、必要です(私は信じています)DISTINCT
:
- すべてのDISTINCTforeign_keys(pat_type、patentの2変量キー)を検索します
- その値を含むレコードをカウントします(たとえば、n =3レコードにはfkey"D"、 "388585"があります)
- これらの3つのレコードを更新して、パーセントを1 / nとして識別します(たとえば、UPDATE 3レコード、パーセント= 1/3に設定)