SQL:如何根据聚合列中的其他列选择值

发布于 2025-01-11 06:27:34 字数 700 浏览 0 评论 0原文

如果我有这样的表:

team_idScoretimestamp
182022-01-05
1102022-02-01
252022-01-06
292022-01-15
272022-01-20

我只想要球队ID和按ID分组的最新得分:

team_idScore
110
27

那么问题是当我按ID分组时,如何根据时间戳选择正确的分数?我可以在一个查询中完成此操作吗?谢谢。

If I have a table like this:

team_idscoretimestamp
182022-01-05
1102022-02-01
252022-01-06
292022-01-15
272022-01-20

and I only want the team ID and the latest score grouped by the ID:

team_idscore
110
27

So the questions is when I group by the ID, how do I select the right score based on the timestamp? can I do this in one query? thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一影成城 2025-01-18 06:27:34

您可以使用 max 窗口函数:

select team_id, score from
(select *, max(timestamp) over(partition by team_id) as maxt from table_name) t
where timestamp = maxt;

Fiddle

You can use the max window function:

select team_id, score from
(select *, max(timestamp) over(partition by team_id) as maxt from table_name) t
where timestamp = maxt;

Fiddle

尴尬癌患者 2025-01-18 06:27:34
SELECT a.* FROM scores as a 
LEFT JOIN scores as b ON (a.teamid = b.teamid AND a.tmstamp < b.tmstamp)
WHERE b.tmstamp is NULL;

本质上,您根据团队 ID 将表连接到自身,但确保时间戳更大

SELECT a.* FROM scores as a 
LEFT JOIN scores as b ON (a.teamid = b.teamid AND a.tmstamp < b.tmstamp)
WHERE b.tmstamp is NULL;

Essentially you join the table to itself based upon the team id but ensuring that the timestamp is the greater

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文