我有以下数据(数据可从 2017 年至今)
SELECT * FROM TABLE1 WHERE DATE > TO_DATE('01/01/2019','MM/DD/YYYY')
Emp_ID Date Vehicle_ID Working_Hours
1005 01/01/2019 X500 7
1005 01/02/2019 X500 6
1005 01/03/2019 X700 7
1005 01/04/2019 X500 5
1005 01/05/2019 X700 7
1005 01/06/2019 X500 7
1006 01/01/2019 X500 7
1006 01/02/2019 X500 6
1006 01/03/2019 X700 7
1006 01/04/2019 X500 5
1006 01/05/2019 X700 7
1006 01/06/2019 X500 7
我需要计算两列。LAST_6M_UNIQ_Vehicle_Count ==> 该员工在过去(过去)6 个月内的唯一车辆 ID 计数 LAST_6M_Vehicle_Count ==> 该员工在过去 6 个月内的所有车辆 ID 计数 注意:从日期列开始的过去 6 个月
预期输出:
Emp_ID Date Vehicle_ID Working_Hours LAST_6M_UNIQ_Vehicle_Count LAST_6M_Vehicle_Count
1005 01/01/2019 X500 7 6 66
1005 01/02/2019 X500 6 7 62
1005 01/03/2019 X700 7 6 63
1005 01/04/2019 X500 5 7 67
1005 01/05/2019 X700 7 7 66
1005 01/06/2019 X500 7 7 67
. . . .
. . . .
. . . .
1005 03/20/2019 X600 6 12 75
1006 01/01/2019 X500 7 11 74
1006 01/02/2019 X500 6 10 66
1006 01/03/2019 X700 7 11 72
1006 01/04/2019 X500 5 13 67
1006 01/05/2019 X700 7 12 64
1006 01/06/2019 X500 7 12 63
例如,在第一行中,LAST_6M_UNIQ_Vehicle_Count 的值为 6,因为对于员工 id 1005,车辆 id 在 ((01/01/2019) - 6 个月) 和 01/01/2019 之间的唯一计数有 6 辆不同的车辆id 在其中。
我尝试了 Over and Partition by 但缺少 6 个月的间隔
SELECT t.*, COUNT(DISTINCT t.VEHICLE_ID) OVER (PARTITION BY t.EMP_ID ORDER BY t.DATE)
AS LAST_6M_UNIQ_Vehicle_Count
FROM TABLE1 t
我无法根据每行的 6 个月间隔计算值。
非常感谢您的帮助。