FrontPage/IT/MW/PostgreSQL/SQL
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#navi(../)
#Contents
------------------------
PostgreSQLで、メモリマスタテーブルとCPUマスタテーブルがそ...
**テーブル構成 [#n7a4bd96]
-時間マスタテーブル (time_master): 全ての時間が格納されて...
--time (時間)
-メモリマスタテーブル (memory_master): メモリ使用率を格納。
--pcname (PC名)
--day (日付)
--time (時間)
--used (使用率)
-CPUマスタテーブル (cpu_master): CPU使用率を格納。
--pcname (PC名)
--day (日付)
--time (時間)
--used (使用率)
**ステップ 1: すべての時間と pcname, day の組み合わせを生...
まず、pcname と day のすべての組み合わせに対して、時間の...
sql
-- メモリマスターとCPUマスターのすべての `pcname` と `da...
WITH all_times AS (
SELECT DISTINCT pcname, day FROM memory_master
UNION
SELECT DISTINCT pcname, day FROM cpu_master
)
-- すべての時間と組み合わせる
SELECT a.pcname, a.day, t.time
FROM all_times a
CROSS JOIN time_master t;
**ステップ 2: メモリとCPUのデータを時間マスタと結合 [#l76...
次に、上記の pcname, day, time の組み合わせに対して、memo...
sql
WITH all_times AS (
SELECT DISTINCT pcname, day FROM memory_master
UNION
SELECT DISTINCT pcname, day FROM cpu_master
)
-- すべての時間と組み合わせる
SELECT a.pcname, a.day, t.time, m.used AS memory_used, c...
FROM all_times a
CROSS JOIN time_master t
LEFT JOIN memory_master m ON a.pcname = m.pcname AND a.d...
LEFT JOIN cpu_master c ON a.pcname = c.pcname AND a.day ...
このクエリにより、全ての pcname, day, time の組み合わせに...
**ステップ 3: 欠けているデータを確認 [#o4e9abe9]
memory_master または cpu_master のデータが欠けている場合...
sql
WITH all_times AS (
SELECT DISTINCT pcname, day FROM memory_master
UNION
SELECT DISTINCT pcname, day FROM cpu_master
)
-- 欠けているデータを確認
SELECT a.pcname, a.day, t.time, m.used AS memory_used, c...
FROM all_times a
CROSS JOIN time_master t
LEFT JOIN memory_master m ON a.pcname = m.pcname AND a.d...
LEFT JOIN cpu_master c ON a.pcname = c.pcname AND a.day ...
WHERE m.used IS NULL OR c.used IS NULL;
**1分ごとにデータを整えるSQL文 [#rbe44024]
WITH data_with_timestamp AS (
SELECT
pcname,
date || ' ' || time AS timestamp_str, -- Combin...
total,
avail
FROM your_table
)
SELECT DISTINCT ON (pcname, date_trunc('minute', to_time...
pcname,
to_timestamp(timestamp_str, 'YYYY/MM/DD HH24:MI:SS')...
total,
avail
FROM data_with_timestamp
ORDER BY pcname, date_trunc('minute', to_timestamp(times...
**Aテーブルのpcnameを利用してBテーブルに対しインサートす...
DO $$
DECLARE
rec RECORD;
BEGIN
-- Loop through each unique pcname
FOR rec IN
SELECT DISTINCT pcname FROM your_source_table
LOOP
-- Insert the latest data per minute for each pc...
INSERT INTO your_target_table (pcname, date, tim...
SELECT DISTINCT ON (pcname, date_trunc('minute',...
pcname,
date,
time,
total,
avail
FROM your_source_table
WHERE pcname = rec.pcname -- Filter by current ...
ORDER BY date_trunc('minute', to_timestamp(date ...
to_timestamp(date || ' ' || time, 'YYYY...
END LOOP;
END $$;
**まとめ [#pfb90eff]
このクエリでは、memory_master と cpu_master のデータがそ...
もしさらにデータを補完したい場合、デフォルト値を使用する...
**情報ソース [#x6fcbc0f]
-[[ChatGPT>https://openai.com/ja-JP/chatgpt/]]
終了行:
#navi(../)
#Contents
------------------------
PostgreSQLで、メモリマスタテーブルとCPUマスタテーブルがそ...
**テーブル構成 [#n7a4bd96]
-時間マスタテーブル (time_master): 全ての時間が格納されて...
--time (時間)
-メモリマスタテーブル (memory_master): メモリ使用率を格納。
--pcname (PC名)
--day (日付)
--time (時間)
--used (使用率)
-CPUマスタテーブル (cpu_master): CPU使用率を格納。
--pcname (PC名)
--day (日付)
--time (時間)
--used (使用率)
**ステップ 1: すべての時間と pcname, day の組み合わせを生...
まず、pcname と day のすべての組み合わせに対して、時間の...
sql
-- メモリマスターとCPUマスターのすべての `pcname` と `da...
WITH all_times AS (
SELECT DISTINCT pcname, day FROM memory_master
UNION
SELECT DISTINCT pcname, day FROM cpu_master
)
-- すべての時間と組み合わせる
SELECT a.pcname, a.day, t.time
FROM all_times a
CROSS JOIN time_master t;
**ステップ 2: メモリとCPUのデータを時間マスタと結合 [#l76...
次に、上記の pcname, day, time の組み合わせに対して、memo...
sql
WITH all_times AS (
SELECT DISTINCT pcname, day FROM memory_master
UNION
SELECT DISTINCT pcname, day FROM cpu_master
)
-- すべての時間と組み合わせる
SELECT a.pcname, a.day, t.time, m.used AS memory_used, c...
FROM all_times a
CROSS JOIN time_master t
LEFT JOIN memory_master m ON a.pcname = m.pcname AND a.d...
LEFT JOIN cpu_master c ON a.pcname = c.pcname AND a.day ...
このクエリにより、全ての pcname, day, time の組み合わせに...
**ステップ 3: 欠けているデータを確認 [#o4e9abe9]
memory_master または cpu_master のデータが欠けている場合...
sql
WITH all_times AS (
SELECT DISTINCT pcname, day FROM memory_master
UNION
SELECT DISTINCT pcname, day FROM cpu_master
)
-- 欠けているデータを確認
SELECT a.pcname, a.day, t.time, m.used AS memory_used, c...
FROM all_times a
CROSS JOIN time_master t
LEFT JOIN memory_master m ON a.pcname = m.pcname AND a.d...
LEFT JOIN cpu_master c ON a.pcname = c.pcname AND a.day ...
WHERE m.used IS NULL OR c.used IS NULL;
**1分ごとにデータを整えるSQL文 [#rbe44024]
WITH data_with_timestamp AS (
SELECT
pcname,
date || ' ' || time AS timestamp_str, -- Combin...
total,
avail
FROM your_table
)
SELECT DISTINCT ON (pcname, date_trunc('minute', to_time...
pcname,
to_timestamp(timestamp_str, 'YYYY/MM/DD HH24:MI:SS')...
total,
avail
FROM data_with_timestamp
ORDER BY pcname, date_trunc('minute', to_timestamp(times...
**Aテーブルのpcnameを利用してBテーブルに対しインサートす...
DO $$
DECLARE
rec RECORD;
BEGIN
-- Loop through each unique pcname
FOR rec IN
SELECT DISTINCT pcname FROM your_source_table
LOOP
-- Insert the latest data per minute for each pc...
INSERT INTO your_target_table (pcname, date, tim...
SELECT DISTINCT ON (pcname, date_trunc('minute',...
pcname,
date,
time,
total,
avail
FROM your_source_table
WHERE pcname = rec.pcname -- Filter by current ...
ORDER BY date_trunc('minute', to_timestamp(date ...
to_timestamp(date || ' ' || time, 'YYYY...
END LOOP;
END $$;
**まとめ [#pfb90eff]
このクエリでは、memory_master と cpu_master のデータがそ...
もしさらにデータを補完したい場合、デフォルト値を使用する...
**情報ソース [#x6fcbc0f]
-[[ChatGPT>https://openai.com/ja-JP/chatgpt/]]
ページ名: