mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: consecutive_visits query wasn't return only the first result per user
This commit is contained in:
@@ -234,13 +234,18 @@ SQL
|
|||||||
|
|
||||||
def self.consecutive_visits(days)
|
def self.consecutive_visits(days)
|
||||||
<<~SQL
|
<<~SQL
|
||||||
SELECT user_id, "start" + interval '1' day * COUNT(*) AS "granted_at"
|
WITH consecutive_visits AS (
|
||||||
FROM (
|
SELECT user_id, visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int "start"
|
||||||
SELECT user_id, visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int "start"
|
FROM user_visits
|
||||||
FROM user_visits
|
), visits AS (
|
||||||
) s
|
SELECT user_id, "start", DENSE_RANK() OVER (PARTITION BY user_id ORDER BY "start") "rank"
|
||||||
GROUP BY user_id, "start"
|
FROM consecutive_visits
|
||||||
|
GROUP BY user_id, "start"
|
||||||
HAVING COUNT(*) >= #{days}
|
HAVING COUNT(*) >= #{days}
|
||||||
|
)
|
||||||
|
SELECT user_id, "start" + interval '#{days} days' "granted_at"
|
||||||
|
FROM visits
|
||||||
|
WHERE "rank" = 1
|
||||||
SQL
|
SQL
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user