35 lines
868 B
SQL
35 lines
868 B
SQL
/* Q11. Friend triangles
|
|
\set country '\'Belarus\''
|
|
*/
|
|
|
|
pragma enable_profiling;
|
|
|
|
WITH persons_of_country_w_friends AS (
|
|
SELECT p.p_personid AS personid
|
|
, k.k_person2id as friendid
|
|
FROM person p
|
|
, place ci -- city
|
|
, place co -- country
|
|
, knows k
|
|
WHERE 1=1
|
|
-- join
|
|
AND p.p_placeid = ci.pl_placeid
|
|
AND ci.pl_containerplaceid = co.pl_placeid
|
|
AND p.p_personid = k.k_person1id
|
|
-- filter
|
|
AND co.pl_name = 'Belarus'
|
|
)
|
|
SELECT count(*)
|
|
FROM persons_of_country_w_friends p1
|
|
, persons_of_country_w_friends p2
|
|
, persons_of_country_w_friends p3
|
|
WHERE 1=1
|
|
-- join
|
|
AND p1.friendid = p2.personid
|
|
AND p2.friendid = p3.personid
|
|
AND p3.friendid = p1.personid
|
|
-- filter: unique trinagles only
|
|
AND p1.personid < p2.personid
|
|
AND p2.personid < p3.personid
|
|
;
|