should be it
This commit is contained in:
54
external/duckdb/benchmark/ldbc/queries/bi-8.sql
vendored
Normal file
54
external/duckdb/benchmark/ldbc/queries/bi-8.sql
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
/* Q8. Central Person for a Tag
|
||||
\set tag '\'Che_Guevara\''
|
||||
\set date '\'2011-07-22T00:00:00.000+00:00\''::timestamp
|
||||
*/
|
||||
WITH person_tag_interest AS (
|
||||
SELECT p.p_personid AS personid
|
||||
FROM person p
|
||||
, person_tag pt
|
||||
, tag t
|
||||
WHERE 1=1
|
||||
-- join
|
||||
AND p.p_personid = pt.pt_personid
|
||||
AND pt.pt_tagid = t.t_tagid
|
||||
-- filter
|
||||
AND t.t_name = 'Che_Guevara'
|
||||
)
|
||||
, person_message_score AS (
|
||||
SELECT p.p_personid AS personid
|
||||
, count(*) AS message_score
|
||||
FROM message m
|
||||
, person p
|
||||
, message_tag pt
|
||||
, tag t
|
||||
WHERE 1=1
|
||||
-- join
|
||||
AND m.m_creatorid = p.p_personid
|
||||
AND m.m_messageid = pt.mt_messageid
|
||||
AND pt.mt_tagid = t.t_tagid
|
||||
-- filter
|
||||
AND m.m_creationdate > '2011-07-22T00:00:00'
|
||||
AND t.t_name = 'Che_Guevara'
|
||||
GROUP BY p.p_personid
|
||||
)
|
||||
, person_score AS (
|
||||
SELECT coalesce(pti.personid, pms.personid) AS personid
|
||||
, CASE WHEN pti.personid IS NULL then 0 ELSE 100 END -- scored from interest in the given tag
|
||||
+ coalesce(pms.message_score, 0) AS score
|
||||
FROM person_tag_interest pti
|
||||
FULL JOIN person_message_score pms ON (pti.personid = pms.personid)
|
||||
)
|
||||
SELECT p.personid AS "person.id"
|
||||
, p.score AS score
|
||||
, sum(f.score) AS friendsScore
|
||||
FROM person_score p
|
||||
, knows k
|
||||
, person_score f -- the friend
|
||||
WHERE 1=1
|
||||
-- join
|
||||
AND p.personid = k.k_person1id
|
||||
AND k.k_person2id = f.personid
|
||||
GROUP BY p.personid, p.score
|
||||
ORDER BY p.score + sum(f.score) DESC, p.personid
|
||||
LIMIT 100
|
||||
;
|
||||
Reference in New Issue
Block a user