Skip to content

Instantly share code, notes, and snippets.

@finbarr
Last active August 14, 2018 05:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save finbarr/d06b609866af3cfe47b6d55292c09690 to your computer and use it in GitHub Desktop.
Save finbarr/d06b609866af3cfe47b6d55292c09690 to your computer and use it in GitHub Desktop.
Query to find the average number of reviews before a negative review.
WITH ranked_reviews AS (
SELECT
a.name AS app_name,
a.id AS app_id,
RANK() OVER (
PARTITION BY r.app_id
ORDER BY
r.posted_at ASC
) AS rank,
r.score,
r.posted_at
FROM
apps a
INNER JOIN reviews r ON r.app_id = a.id
)
SELECT
AVG(min_bad_review_rank)
FROM
(
SELECT
MIN(rank) AS min_bad_review_rank,
rr.app_id
FROM
ranked_reviews rr
WHERE
EXISTS(
SELECT
1
FROM
ranked_reviews rr2
WHERE
rr2.app_id = rr.app_id
AND rr2.rank >= 100
)
AND score < 3
GROUP BY
rr.app_id
) AS q1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment