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([
“HpQN6NxQs6Y8kdS6XOVY”,
“UN7bsEiQmjXFQ9wsPjvL”,
“44wRCJhM0SSLoyfFyhDs”,
“1ENYKL02RT8aidhI917F”,
“DsKjxLEnyp7KzC93t1YX”,
“Sgl5VJI79NB6b22EqTn3”,
“LorT6689duDMfrlASd3O”,
“17fsggSIuqxnhKFwOI2g”,
“v3vTMn9bAA0joehFnsRK”,
“s4N3L6iTy93DK5F0mh6i”
])
),
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