2017-02-24 6 views
0

私は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 

私の選択クエリには何が問題なのですか?

+1

今日は同じような質問のようです。私はちょうどここに質問に答えた:http://stackoverflow.com/questions/42430671/how-to-solve-this-using-a-subquery-in-a-from-clause/42430777#42430777 – cha

+1

ちょうど相関サブクエリまたは内部結合 – cha

+0

サブクエリは、異なるホスト名に対して最大の2つのタイムスタンプ「111113」および「111111」を返します。したがって、これらのタイムスタンプを持つすべての行が取得されます。相関サブクエリは、@cha suggestと 'in'の代わりに' = 'を使用してください。 –

答えて

1

ありがとう@cha、私は間違ってIDのwhere節をやっていた代わりに、それはhostnameにする必要があります。 私は希望の出力を得ました -

select * from cpu_utilization where timestamp = (select max(timestamp) from cpu_utilization cpuutil where cpuutil.hostname=cpu_utilization.hostname); 
+0

良い仕事。また、内部結合を試してください。内部結合バージョンは、相関サブクエリと比較してパフォーマンスが向上することがあります – cha

関連する問題