【发布时间】:2021-10-19 13:11:15
【问题描述】:
我将如何修改以下 SQL 查询代码以每小时返回每个员工的最新条目,而不是当前返回每个员工的每个事件,无论它每小时在查询中出现多少次。
例如,如果员工在下午 2-3 点之间有 4 个条目,在下午 3-4 点之间有 1 个条目,则只返回下午 2-3 点间隔的最后一个条目和下午 3-4 点间隔的 1 个条目。
SQL查询代码:
SELECT
EMPLOYEE_ID
FIRST_NAME
LAST_NAME
MAX(TIMESTAMP) AS LATEST_TIMESTAMP
FROM
MAIN.DATABASE
GROUP BY
EMPLOYEE_ID, FIRST_NAME, LAST_NAME, TIMESTAMP
ORDER BY TIMESTAMP desc;
数据表:
| EMPLOYEE_ID | FIRST_NAME | LAST_NAME | TIMESTAMP |
|---|---|---|---|
| 123456789 | John | Doe | 8/17/2021 3:39:39.000000 PM |
| 123456789 | John | Doe | 7/23/2021 2:13:55.000000 PM |
| 123456789 | John | Doe | 7/23/2021 2:13:54.000000 PM |
| 123456789 | John | Doe | 7/23/2021 2:13:53.000000 PM |
| 123456789 | John | Doe | 7/23/2021 2:13:52.000000 PM |
【问题讨论】:
-
你的标题是“Oracle”,你的标签是 [sql-server] 和 [mysql]...你真正在用什么。请修正你的标签。
-
另外,在同一列上聚合和分组很少是正确的选择。
标签: sql