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

35 lines
1.4 KiB
SQL

select p_personid, p_firstname, p_lastname,
( select count(distinct m_messageid)
from message, message_tag pt1
where
m_creatorid = p_personid and
m_c_replyof IS NULL and -- post, not comment
m_messageid = mt_messageid and
exists (select * from person_tag where pt_personid = 21990232556256 and pt_tagid = pt1.mt_tagid)
) -
( select count(*)
from message
where
m_creatorid = p_personid and
m_c_replyof IS NULL and -- post, not comment
not exists (select * from person_tag, message_tag where pt_personid = 21990232556256 and pt_tagid = mt_tagid and mt_messageid = m_messageid)
) as score,
p_gender, pl_name
from person, place,
( select distinct k2.k_person2id
from knows k1, knows k2
where
k1.k_person1id = 21990232556256 and k1.k_person2id = k2.k_person1id and k2.k_person2id <> 21990232556256 and
not exists (select * from knows where k_person1id = 21990232556256 and k_person2id = k2.k_person2id)
) f
where
p_placeid = pl_placeid and
p_personid = f.k_person2id and
(
(extract(month from p_birthday) = 10 and (case when extract(day from p_birthday) >= 21 then true else false end)) -- :month
or
(extract(month from p_birthday) = 11 and (case when extract(day from p_birthday) < 22 then true else false end)) -- :nextMonth
)
order by score desc, p_personid
limit 10