sql - 接收每个 id 的一条记录和最新日期的一条记录
问题描述
我有下表stamps
的列:
- 工人
- 日期
- 转移
- 平衡
我想要每个工人一行,最近一天的记录,并且在 Transferred 中也有值 1
我尝试了很多可能性,但没有一个能按我想要的方式工作。
SELECT DISTINCT OUT.WORKER,OUT.DATE,OUT.TRANSFERRED,OUT.BALANCE
FROM (
SELECT WORKER,DATE,TRANSFERRED,BALANCE
FROM STAMPS
ORDER BY DATE DESC
) AS OUT
GROUP BY WORKER
解决方案
你说你想要最近的一天(大概是给定工人的最新一天),所以你需要 max 函数。
select s.Worker,
s.Date,
s.Transferred,
s.Balance
from
(select worker,
max(date) as date
from stamps
where transferred = 1
group by Worker) as max_dates,
join stamps s
on s.worked = max_dates.worker
and s.date = max_dates.date
推荐阅读
- flutter - 在动画时间轴的上下文中理解 Flutter 的 SchedulerBinding
- vim - Vim 在后台创建和编辑新文件
- jenkins - BitBucket Webhook - 无法连接到 Jenkins URL
- reactjs - 使用 Context API 管理状态
- makefile - GNU Make:使用带有隐式规则的通配符函数
- python - 如何使用 sklearn 中的 DBSCAN 方法进行聚类
- reactjs - React hooks 和 Material-UI:Snackbar 显示一次但不再显示
- django - Django 注册序列化器
- r - 如何将某些项目从长列表转换为 R 中的数据框?
- deep-learning - 语义分割数据集组织