Я недавно изучал отчеты о разрыве в уровнях доверия. В частности, TL2 и то, что мешает пользователям перейти с TL1 на TL2.
Анализ пробелов у пользователей заставил меня осознать, насколько это зависит от сообщества. Дело не только в моих вопросах и моих мнениях. Важно также взаимодействовать с другими пользователями. И это прекрасно.
И всё же меня немного угнетает осознание того, сколько пользователей так близко к TL2, но им просто не хватает… «возвращения долга» сообществу.
Интересно, есть ли у кого-нибудь (возможно, у родителей двухлетних детей?
) идеи о том, как вдохновить людей на дух сообщества и на то, чтобы думать о других и помогать им…?
Для справки:
Запрос в Data Explorer
Для тех, кто хочет получить сам запрос:
with
-- Пользователи уровня доверия 1
tl AS (
SELECT id as user_id, trust_level, last_seen_at
FROM users
WHERE trust_level = 1
),
-- Пользователи, активные за последние 3 месяца: посещения, прочитанные посты, время чтения
pr AS (
SELECT user_id,
count(1) as visits,
sum(posts_read) as posts_read,
SUM(time_read)/60 as minutes_reading_time,
DATE(last_seen_at) AS last_seen
FROM user_visits
INNER JOIN tl using (user_id)
WHERE DATE(last_seen_at) >= CURRENT_DATE - INTERVAL '3 month'
GROUP BY user_id, last_seen
ORDER BY visits, last_seen DESC
),
-- Темы, на которые отвечали
trt as (
select posts.user_id,
count(distinct topic_id) as replied_count
from posts
INNER JOIN tl using (user_id)
INNER JOIN topics ON topics.id = posts.topic_id
WHERE topics.user_id <> posts.user_id
AND posts.deleted_at IS NULL AND topics.deleted_at IS NULL
-- AND topics.archetype <> 'private_message'
AND archetype = 'regular'
GROUP BY posts.user_id
ORDER BY replied_count DESC
),
-- Просмотренные темы за всё время
tvat as (
select tv.user_id,
COUNT(distinct tv.topic_id) AS topic_id
FROM topic_views tv
LEFT JOIN topics t on tv.topic_id=t.id
INNER JOIN tl on tv.user_id=tl.user_id
WHERE
t.archetype = 'regular'
AND t.deleted_at is null
group by tv.user_id
),
likes AS (
SELECT user_id,
likes_given, likes_received
from user_stats
INNER JOIN tl using (user_id)
)
SELECT pr.user_id,
pr.last_seen as "Последний визит",
-- Дней посещений: 15
greatest(15-coalesce(pr.visits,0),0) as "Разрыв по дням посещений",
-- Ответы в темах: 3
greatest(3-coalesce(trt.replied_count,0), 0) as "Разрыв по ответам в темах",
-- Просмотренные темы: 20
greatest(20-coalesce(tvat.topic_id,0),0) as "Разрыв по просмотренным темам",
-- Прочитанные посты: 100
greatest(100-coalesce(pr.posts_read,0),0) as "Разрыв по прочитанным постам",
-- Время чтения постов: 60 мин
greatest(60-pr.minutes_reading_time,0) as "Разрыв по времени чтения",
-- Отданные лайки: 1
greatest(1-likes.likes_given,0) as "Разрыв по отданным лайкам",
-- Полученные лайки: 1
greatest(1-likes.likes_received,0) as "Разрыв по полученным лайкам"
FROM pr
left join trt using (user_id)
left join tvat using (user_id)
LEFT JOIN likes using (user_id)
ORDER BY
pr.visits DESC
LIMIT 500
