我有一个select语句返回到表格下面( User_Result)。
userId UserName Course EnrolmentDate CompletedDate Status
111 User_01 Course1 2016-03-16 2016-03-18 Fail
111 User_01 Course1 2016-03-20 2016-03-24 pass
112 User_02 Course2 2016-01-05 2016-01-05 Fail
112 User_02 Course2 2016-01-05 2016-01-06 Fail
112 User_02 Course2 2016-01-20 2016-01-25 Pass
现在我想根据注册日期和完成日期添加对这些用户的尝试次数。
我是怎么做的;
With "report_result" AS
(
SELECT
"userID",
"UserName",
"Course",
"EnrolmentDate",
"Completed Date",
"status"
FROM "User_Result"
)
,
"attempts_tbl" AS (
SELECT
"userID",
"Course",
count(1) AS attempt
FROM report_result
GROUP BY "userID", "Course"
)
,
"finaltable" AS
(
Select
report_result.*,
attempts_tbl.attempt
from
report_result,attempts_tbl
where report_result."userID" = attempts_tbl."userID" and report_result."Course" = attempts_tbl."Course"
)
SELECT *
FROM final table;
但我得到了以下结果,
userId UserName Course EnrolmentDate CompletedDate Status #Attempts
111 User_01 Course1 2016-03-16 2016-03-18 Fail 2
111 User_01 Course1 2016-03-20 2016-03-24 pass 2
112 User_02 Course2 2016-01-05 2016-01-05 Fail 3
112 User_02 Course2 2016-01-05 2016-01-06 Fail 3
112 User_02 Course2 2016-01-20 2016-01-25 Pass 3
我应该如何根据这一点获得尝试次数:
userId UserName Course EnrolmentDate CompletedDate Status #Attempts
111 User_01 Course1 2016-03-16 2016-03-18 Fail 1
111 User_01 Course1 2016-03-20 2016-03-24 pass 2
112 User_02 Course2 2016-01-05 2016-01-05 Fail 1
112 User_02 Course2 2016-01-05 2016-01-06 Fail 2
112 User_02 Course2 2016-01-20 2016-01-25 Pass 3
Mush感谢您的回复。
谢谢 :)
答案 0 :(得分:1)
我认为你可以在这里使用row_number
功能。
select u.*,
row_number() over(partition by userid,course order by enrollmentdate,completeddate) as attempts
from "User_Result" u