【发布时间】:2021-11-26 22:22:00
【问题描述】:
我将如何修改以下 SQL 查询代码以每小时返回每个员工的最新条目,而不是当前返回每个员工的每个事件,无论它每小时在查询中出现多少次。
我已附上示例数据,以说明当前在数据库中的顺序和所需的表输出。注意:您可以看到它是按降序排列的,并且省略了 2 个条目(0001 和 0009),因为它们在一个小时内来自同一员工。
SQL查询代码:
select
TRANSACTION_ID
EMPLOYEE_ID
FIRST_NAME
LAST_NAME
TIME_STAMP
from (select d.*,
row_number() over (partition by EMPLOYEE_ID, trunc(TIME_STAMP, 'HH') order by TIME_STAMP desc) as SEQNUM
from MAIN.DATABASE d
) d
where SEQNUM = 1;
order by TRANSACTION_ID desc;
这是数据库中数据的当前顺序:
| TRANSACTION_ID | EMPLOYEE_ID | FIRST_NAME | LAST_NAME | TIME_STAMP |
|---|---|---|---|---|
| 0001 | AAAA | Adam | Akbar | 10/05/2021 04:42:42.000 PM |
| 0004 | BBBB | Barry | Brink | 10/06/2021 07:25:25.000 AM |
| 0003 | CCCC | Charlie | Che | 10/06/2021 07:15:15.000 AM |
| 0005 | DDDD | David | Doe | 10/06/2021 07:27:27.000 AM |
| 0006 | EEEE | Eric | Erickson | 10/06/2021 07:29:29.000 AM |
| 0007 | FFFF | Fred | Foe | 10/06/2021 07:31:31.000 AM |
| 0008 | GGGG | George | Guy | 10/06/2021 07:33:33.000 AM |
| 0010 | HHHH | Henry | Hugh | 10/06/2021 07:55:55.000 AM |
| 0009 | HHHH | Henry | Hugh | 10/06/2021 07:54:54.000 AM |
| 0002 | AAAA | Adam | Akbar | 10/05/2021 04:43:43.000 PM |
这是应该返回的:
| TRANSACTION_ID | EMPLOYEE_ID | FIRST_NAME | LAST_NAME | TIME_STAMP |
|---|---|---|---|---|
| 0010 | HHHH | Henry | Hugh | 10/06/2021 07:55:55.000 AM |
| 0008 | GGGG | George | Guy | 10/06/2021 07:33:33.000 AM |
| 0007 | FFFF | Fred | Foe | 10/06/2021 07:31:31.000 AM |
| 0006 | EEEE | Eric | Erickson | 10/06/2021 07:29:29.000 AM |
| 0005 | DDDD | David | Doe | 10/06/2021 07:27:27.000 AM |
| 0004 | BBBB | Barry | Brink | 10/06/2021 07:25:25.000 AM |
| 0003 | CCCC | Charlie | Che | 10/06/2021 07:15:15.000 AM |
| 0002 | AAAA | Adam | Akbar | 10/05/2021 04:43:43.000 PM |
但是,这是代码当前返回的内容:
| TRANSACTION_ID | EMPLOYEE_ID | FIRST_NAME | LAST_NAME | TIME_STAMP |
|---|---|---|---|---|
| 0010 | HHHH | Henry | Hugh | 10/06/2021 07:55:55.000 AM |
| 0006 | EEEE | Eric | Erickson | 10/06/2021 07:29:29.000 AM |
| 0003 | CCCC | Charlie | Che | 10/06/2021 07:15:15.000 AM |
| 0002 | AAAA | Adam | Akbar | 10/05/2021 04:43:43.000 PM |
知道我缺少什么以及如何解决它吗?
【问题讨论】:
标签: sql oracle greatest-n-per-group