簡體   English   中英

如何基於另一個列值獲取最大值(列值)

[英]How to get max(column value) based on another column value

我有一個包含以下架構和示例值的表。

在此處輸入圖片說明

我正在嘗試編寫一個查詢,該查詢將為每個用戶提供連接狀態以及斷開狀態的max(timestamp)。

我正在尋找所需查詢的輸出模式示例為:

用戶名| Connected_MAX_Timestamp | Disconnected_MAX_Timestamp

我嘗試過的查詢是這樣的:

從套接字信息組中按用戶名,socketstatus選擇用戶名,socketstatus,max(timestamp)

和相同的輸出是:

在此處輸入圖片說明

有人可以告訴我如何實現所需的輸出嗎?

只需使用條件聚合:

select username,
       max(case when socketstatus = 'Connected' then timestamp end) as max_connected_timestamp,
       max(case when socketstatus = 'Disconnected' then timestamp end) as max_disconnected_timestamp,
from socketinfo
group by username;
SELECT t1.username,
       t1.socketstatus,
       max(t1.timestamp) AS "Connected_MAX_Timestamp",
       t2.username,
       t2.socketstatus,
       max(t2.timestamp) "Disconnected_MAX_Timestamp"
FROM socketinfo t1,
     socketinfo t2
WHERE t1.socketstatus='Connected'
  AND t2.socketstatus='Disconnected'
  AND t1.username=t2.username
GROUP BY t1.username,
         t1.socketstatus,
         t2.username,
         t2.socketstatus;

如果我正確理解了您的問題,則此方法適用於Postgres 9.5。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM