WITH
users AS (SELECT userID FROM `logs.registeredUsers` WHERE schedule != "original" AND schedule != "aggressiveStart"),
withAllQCVCCards AS (SELECT userID FROM `logs.reviews` JOIN users USING (userID) WHERE cardID IN (SELECT cardID FROM `logs.latestEssaysCards` WHERE essayName="qcvc") AND reviewCount=1 GROUP BY userID HAVING COUNT(*) = 112),
reviews AS (SELECT *, COUNTIF(reviewMarking="forgotten" AND isRetry IS NOT TRUE) OVER (PARTITION BY userID, cardID ORDER BY timestamp ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS forgottenCount, COUNTIF(sessionID IS NOT NULL AND isRetry IS NOT TRUE) OVER (PARTITION BY userID, cardID ORDER BY timestamp) AS sessionNumber FROM `logs.reviews` JOIN withAllQCVCCards USING (userID) WHERE isRetry IS NOT NULL AND cardID IN (SELECT cardID FROM `logs.latestEssaysCards` WHERE essayName="qcvc")),
perUser AS (SELECT userID, COUNTIF(reviewMarking="forgotten") AS doubleForgottenCount FROM reviews WHERE sessionNumber=1 GROUP BY userID HAVING COUNT(*)>=SUM(forgottenCount))
SELECT APPROX_QUANTILES(IFNULL(doubleForgottenCount, 0), 10) from perUser