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
我的選擇查詢有什麼問題,有什麼想法?
看起來像今天是類似問題的一天。我剛剛在這裏回答了一個問題:http://stackoverflow.com/questions/42430671/how-to-solve-this-using-a-subquery-in-a-from-clause/42430777#42430777 – cha
只需使用關聯子查詢或內部聯接 – cha
您的子查詢返回兩個時間戳「111113」和「111111」,這兩個時間戳對於不同的主機名是最大的。這樣你就可以得到具有這些時間戳的所有行。使用相關的子查詢作爲@cha建議和'='而不是'in'。 –