WITH
users AS (SELECT userID, schedule FROM `logs.registeredUsers`),
forgottenInEssay AS (SELECT userID, cardID FROM `logs.reviews` WHERE cardID IN (SELECT cardID FROM `logs.latestEssaysCards` WHERE essayName="qcvc") AND reviewCount = 1 AND reviewMarking = "forgotten"),
sessionReviews AS (SELECT userID, cardID, reviewMarking, beforeInterval, isRetry, RANK() OVER (PARTITION BY userID, cardID ORDER BY timestamp) AS sessionNumber FROM `logs.reviews` JOIN forgottenInEssay USING (userID, cardID) WHERE sessionID IS NOT NULL),
reviewSamples AS (SELECT userID, cardID, reviewMarking, beforeInterval FROM sessionReviews WHERE sessionNumber = 1 AND isRetry IS NOT TRUE)
SELECT beforeInterval, COUNTIF(reviewMarking="remembered") / COUNT(*) AS accuracy, COUNT(*) AS N, COUNT(DISTINCT userID) AS userCount FROM reviewSamples JOIN users USING (userID) WHERE (schedule="aggressiveStart" AND beforeInterval=432000000) OR (schedule!="aggressiveStart" AND schedule!="original" AND beforeInterval=86400000) GROUP BY beforeInterval ORDER BY beforeInterval