Top quality users in last six months

Top quality users in last six months

Top 20 users by average post score.

Post scores are calculated based on reply count, likes, incoming links, bookmarks, average time (reading?) and read count.

SELECT 
    sum(p.score) / count(p) as "average score per post", 
    count(p.id) as post_count, 
    p.user_id
FROM posts p
JOIN users u ON u.id = p.user_id
WHERE p.created_at >= CURRENT_DATE - INTERVAL '6 month'
  AND NOT u.admin
  AND NOT u.silenced
  AND u.active
GROUP by user_id, u.views
HAVING count(p.id) > 50
ORDER BY sum(p.score) / count(p) DESC
LIMIT 20

Ciao, adoro la query “Utenti di alta qualità negli ultimi sei mesi”. Mi chiedo… come scriveremmo una query simile per mostrare gli utenti di qualità più bassa nell’ultimo semestre? Qualcuno che ha pubblicato molto, ma ha ricevuto pochissimi like, risposte, ecc.

Prova a rimuovere “DESC” da questa riga:

ORDER BY sum(p.score) / count(p)

Ottimo, grazie. Lo apprezzo molto!

Ho anche modificato questa parte " HAVING count(p.id) > 5" per ottenere risultati più pertinenti per la mia community. Continuerò a fare qualche prova. Sembra che il nostro team di moderatori intervenga con gli utenti prima che abbiano pubblicato troppe volte, se i loro post sono di bassa qualità. Questa query sembra poter aiutare a confermare il mio giudizio su qualcuno e a farsi un’idea precoce quando qualcuno non inizia nel modo giusto.