WITH
users AS (
SELECT
*
FROM
`logs.registeredUsers`),
initiallyForgotten AS (
SELECT
DISTINCT userID,
schedule,
cardID
FROM
`logs.reviews`
JOIN
`users`
USING
(userID)
WHERE
cardID IN UNNEST([
“buvxh7iNAE0OGCWKLmlA”,
“pa4BhdkYjLrj7A022sA3”,
“17fsggSIuqxnhKFwOI2g”,
“zRgw2osbesLEQ5ADo8DD”,
“UN7bsEiQmjXFQ9wsPjvL”,
“G51BlvOBsvqToezS7BAg”,
“S0ijLyYsCv8orVGWDhAd”,
“OnKhM42b4nU5JAf76PxU”,
“lvLVFSDJzSpPmmNFs0Bq”,
“xQte6vwqUwy2j5OWdxjK”
])
),
subsequentReviews AS (
SELECT
*,
RANK() OVER (PARTITION BY userID, cardID ORDER BY timestamp) AS fullReviewCount
FROM
`logs.reviews`
JOIN
initiallyForgotten
USING
(userID,
cardID)
WHERE
sessionID IS NOT NULL
AND (beforeInterval > 1000*60*60*48 OR schedule=“original”))
SELECT
beforeInterval / (1000*60*60*24),
COUNT(DISTINCT userID) AS N,
COUNT(*) AS promptN,
COUNTIF(reviewMarking=“remembered”) / COUNT(*) AS accuracy
FROM
subsequentReviews
WHERE
fullReviewCount = 1
GROUP BY
beforeInterval
ORDER BY
beforeInterval