我在 PostgreSQL 中有以下資料庫:

如何從表activity-history-tracking中選擇最后tracking一個用戶?
id username date tracking
------------------------------
1 Aaron 2/1/2010 1600
2 Freddy 3/1/2010 2000
3 Jimin 8/4/2009 3000
4 Brad 2/2/2010 4000
5 Gus 12/2/2009 1000
...
在activity-history-follow-up用戶的歷史(跟進)中每天存盤。
以下沒有奏效:
SELECT *
FROM(Select
user_id,
Max(date) as lastActivity
from "activity-historic-tracked"
Group By user_id) as result
GROUP BY user_id, lastActivity
uj5u.com熱心網友回復:
從您現有的為每個用戶帶來最新活動日期的聚合查詢開始,我們可以只為用戶表帶來一個連接,以便我們可以訪問用戶名:
select
t.id_user,
max(t.date) as lastactivity,
u.username
from "activity-historic-tracked" t
inner join "user" u on u.id = t.id_user
group by t.id_user, u.id
另一方面,如果您需要查找每個用戶的全部最新歷史記錄(例如,如果除了最新日期之外還有更多您感興趣的列),那么我們可以過濾而不是聚合;distinct on為此派上用場:
select distinct on (t.id_user) t.*, u.username
from "activity-historic-tracked" t
inner join "user" u on u.id = t.id_user
order by t.id_user, t.date desc
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/530321.html
標籤:sqlPostgreSQL内部联接聚合函数每组最大 n
上一篇:SQLorderby然后替換
