PostgreSQLで、メモリマスタテーブルとCPUマスタテーブルがそれぞれ異なる時間が歯抜けしている状況に対応するには、以下の手順でSQLクエリを構築します。

テーブル構成 時間マスタテーブル (time_master): 全ての時間が格納されている。 time (時間) メモリマスタテーブル (memory_master): メモリ使用率を格納。 pcname (PC名) day (日付) time (時間) used (使用率) CPUマスタテーブル (cpu_master): CPU使用率を格納。 pcname (PC名) day (日付) time (時間) used (使用率) ステップ 1: すべての時間と pcname, day の組み合わせを生成 まず、pcname と day のすべての組み合わせに対して、時間のリストを組み合わせるために、CROSS JOIN を利用します。

sql コードをコピーする

sql コードをコピーする WITH all_times AS (

   SELECT DISTINCT pcname, day FROM memory_master
   UNION
   SELECT DISTINCT pcname, day FROM cpu_master

)

ステップ 3: 欠けているデータを確認 memory_master または cpu_master のデータが欠けている場合、そのレコードの memory_used または cpu_used が NULL となります。これを確認するために、NULL の行だけをフィルタリングします。

sql コードをコピーする WITH all_times AS (

   SELECT DISTINCT pcname, day FROM memory_master
   UNION
   SELECT DISTINCT pcname, day FROM cpu_master

)

もしさらにデータを補完したい場合、デフォルト値を使用するか、追加データを挿入するロジックを実装することができます。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS