35 lines
1.4 KiB
SQL
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
|