私はCPU使用率データの表を持っています。各行にはホスト名、利用率、タイムスタンプがあります。私は特定のホストのために最高のタイムスタンプですべてのホストとCPUの利用を選択したいと思います。以下は最高のタイムスタンプに基づいて各ホスト名の使用率を選択してください
、私のテーブル構造で、挿入と選択
CREATE TABLE cpu_utilization
(
id integer NOT NULL,
hostname character varying(255),
"timestamp" bigint,
cpuutilizationpercentage integer,
CONSTRAINT cpu_utilization_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE cpu_utilization
OWNER TO postgres;
INSERT INTO cpu_utilization
VALUES (1,'host1','111111',10);
INSERT INTO cpu_utilization
VALUES (2,'host1','111112',12);
INSERT INTO cpu_utilization
VALUES (3,'host1','111113',15);
INSERT INTO cpu_utilization
VALUES (4,'host2','111111',20);
INSERT INTO cpu_utilization
VALUES (5,'host2','111112',22);
INSERT INTO cpu_utilization
VALUES (6,'host2','111113',25);
INSERT INTO cpu_utilization
VALUES (7,'host3','111111',10);
と私は
select * from cpu_utilization where timestamp in (select max(timestamp) from cpu_utilization group by hostname);
この選択クエリを行っており、私が取得していますどのような出力がある -
id; hostname timestamp cpuutilizationpercentage
1; "host1"; 111111; 10
3; "host1"; 111113; 15
4; "host2"; 111111; 20
6; "host2"; 111113; 25
7; "host3"; 111111; 10
しかし、私は出力を期待しています -
id; hostname timestamp cpuutilizationpercentage
3; "host1"; 111113; 15
6; "host2"; 111113; 25
7; "host3"; 111111; 10
私の選択クエリには何が問題なのですか?
今日は同じような質問のようです。私はちょうどここに質問に答えた:http://stackoverflow.com/questions/42430671/how-to-solve-this-using-a-subquery-in-a-from-clause/42430777#42430777 – cha
ちょうど相関サブクエリまたは内部結合 – cha
サブクエリは、異なるホスト名に対して最大の2つのタイムスタンプ「111113」および「111111」を返します。したがって、これらのタイムスタンプを持つすべての行が取得されます。相関サブクエリは、@cha suggestと 'in'の代わりに' = 'を使用してください。 –