20210318153212

WITH
  eligibleUsers AS (
  SELECT
    userID
  FROM
    `logs.reviews`
  GROUP BY
    userID
  HAVING
    TIMESTAMP_DIFF(MAX(timestamp), MIN(TIMESTAMP), DAY) >= 31),
  reviews AS (
  SELECT
    *,
    COUNTIF(isRetry IS NOT TRUE) OVER (PARTITION BY userID, cardID ORDER BY timestamp ASC) AS reviewNumber,
    COUNTIF(reviewMarking = "forgotten") OVER (PARTITION BY userID, cardID ORDER BY timestamp ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS lapses,
    FIRST_VALUE(timestamp) OVER (PARTITION BY userID, cardID ORDER BY timestamp ASC) AS firstTimestamp,
    TIMESTAMP_DIFF(LAG(nextDueTimestamp) OVER (PARTITION BY userID, cardID ORDER BY timestamp ASC), LAG(timestamp) OVER(PARTITION BY userID, cardID ORDER BY timestamp ASC), DAY) AS delta
  FROM
    `logs.reviews`
  WHERE
    userID IN (
    SELECT
      userID
    FROM
      eligibleUsers)),
  samples AS (
  SELECT
    *
  FROM
    reviews
  WHERE
    lapses = 0
    AND reviewNumber = 2
    AND firstTimestamp >= TIMESTAMP("2020-12-12")
    AND isRetry IS NOT TRUE)
    
SELECT
  COUNT(*) AS N,
  COUNTIF(reviewMarking="remembered")/COUNT(*) AS accuracy,
  delta,
FROM
  samples
WHERE cardID IN UNNEST(["HpQN6NxQs6Y8kdS6XOVY",
"S0ijLyYsCv8orVGWDhAd",
"pa4BhdkYjLrj7A022sA3",
"Az4W8dbzBXmiO4ZAQykL",
"Mh1cQe6i5bxHnkPsakEs",
"Dmvs7ezW9r77URieTjEh",
"ZYogO9HQAS9M4DkFSWh7",
"DsKjxLEnyp7KzC93t1YX",
"1ENYKL02RT8aidhI917F",
"17fsggSIuqxnhKFwOI2g",
"s4N3L6iTy93DK5F0mh6i",
"v3vTMn9bAA0joehFnsRK",
"44wRCJhM0SSLoyfFyhDs",
"LorT6689duDMfrlASd3O",
"UN7bsEiQmjXFQ9wsPjvL"])
GROUP BY
  delta
ORDER BY
  delta
Last updated 2023-07-13.