Files
email-tracker/external/duckdb/benchmark/ldbc/queries/bi-5.sql
2025-10-24 19:21:19 -05:00

33 lines
964 B
SQL

/* Q5. Most active Posters of a given Topic
\set tag '\'Abbas_I_of_Persia\''
*/
WITH detail AS (
SELECT cr.p_personid AS person_id
, count(DISTINCT r.m_messageid) AS replyCount
, count(DISTINCT l.l_messageid||' '||l.l_personid) AS likeCount
, count(DISTINCT m.m_messageid) AS messageCount
, null as score
FROM tag t
, message_tag pt
, message m LEFT JOIN message r ON (m.m_messageid = r.m_c_replyof)
LEFT JOIN likes l ON (m.m_messageid = l.l_messageid) -- l: likes to m
, person cr -- creator
WHERE 1=1
-- join
AND t.t_tagid = pt.mt_tagid
AND pt.mt_messageid = m.m_messageid
AND m.m_creatorid = cr.p_personid
-- filter
AND t.t_name = 'Abbas_I_of_Persia'
GROUP BY cr.p_personid
)
SELECT person_id AS "person.id"
, replyCount
, likeCount
, messageCount
, 1*messageCount + 2*replyCount + 10*likeCount AS score
FROM detail
ORDER BY score DESC, person_id
LIMIT 100
;