123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- \set country '\'India\''
- \set endDate '\'2012-11-09\''::timestamp
- -- materialize=> \i q13.sql
- -- zombie.id | zombielikecount | totallikecount | zombiescore
- -- ----------------+-----------------+----------------+----------------------
- -- 4398046515583 | 1 | 28 | 0.03571428571428571
- -- 15393162797343 | 1 | 32 | 0.03125
- -- 6597069766996 | 1 | 59 | 0.01694915254237288
- -- 28587302331214 | 1 | 70 | 0.014285714285714285
- -- 13194139540014 | 4 | 349 | 0.011461318051575931
- -- 6597069773020 | 1 | 209 | 0.004784688995215311
- -- 1032 | 0 | 0 | 0
- -- 2238 | 0 | 0 | 0
- -- 3302 | 0 | 1 | 0
- -- 6353 | 0 | 0 | 0
- -- 9542 | 0 | 10 | 0
- -- 2199023255606 | 0 | 0 | 0
- -- 2199023257681 | 0 | 2 | 0
- -- 2199023259422 | 0 | 1 | 0
- -- 2199023260507 | 0 | 0 | 0
- -- 2199023260849 | 0 | 0 | 0
- -- 2199023261845 | 0 | 30 | 0
- -- 2199023263793 | 0 | 0 | 0
- -- 2199023264195 | 0 | 0 | 0
- -- 4398046511273 | 0 | 1 | 0
- -- 4398046521177 | 0 | 0 | 0
- -- 6597069768899 | 0 | 0 | 0
- -- 6597069770651 | 0 | 1 | 0
- -- 6597069771254 | 0 | 0 | 0
- -- 6597069771658 | 0 | 0 | 0
- -- 6597069775228 | 0 | 0 | 0
- -- 8796093023336 | 0 | 0 | 0
- -- 8796093029248 | 0 | 2 | 0
- -- 8796093029298 | 0 | 0 | 0
- -- 8796093029959 | 0 | 0 | 0
- -- 8796093031385 | 0 | 0 | 0
- -- 8796093032614 | 0 | 0 | 0
- -- 10995116278425 | 0 | 1 | 0
- -- 10995116279003 | 0 | 2 | 0
- -- 10995116279401 | 0 | 1 | 0
- -- 10995116284530 | 0 | 0 | 0
- -- 10995116284647 | 0 | 0 | 0
- -- 13194139534872 | 0 | 0 | 0
- -- 13194139537381 | 0 | 0 | 0
- -- 13194139541490 | 0 | 0 | 0
- -- 13194139542083 | 0 | 21 | 0
- -- 15393162789626 | 0 | 1 | 0
- -- 15393162790005 | 0 | 0 | 0
- -- 15393162790303 | 0 | 1 | 0
- -- 15393162791561 | 0 | 0 | 0
- -- 15393162795607 | 0 | 0 | 0
- -- 15393162796167 | 0 | 0 | 0
- -- 15393162797457 | 0 | 0 | 0
- -- 15393162797711 | 0 | 0 | 0
- -- 15393162798239 | 0 | 0 | 0
- -- 17592186045794 | 0 | 0 | 0
- -- 17592186050665 | 0 | 0 | 0
- -- 17592186051978 | 0 | 79 | 0
- -- 19791209302580 | 0 | 0 | 0
- -- 19791209310126 | 0 | 0 | 0
- -- 19791209310408 | 0 | 0 | 0
- -- 21990232558127 | 0 | 0 | 0
- -- 21990232560358 | 0 | 0 | 0
- -- 21990232561810 | 0 | 0 | 0
- -- 21990232563609 | 0 | 0 | 0
- -- 24189255811996 | 0 | 0 | 0
- -- 24189255812829 | 0 | 0 | 0
- -- 24189255812892 | 0 | 0 | 0
- -- 24189255813751 | 0 | 0 | 0
- -- 24189255819454 | 0 | 0 | 0
- -- 24189255820910 | 0 | 0 | 0
- -- 26388279066976 | 0 | 0 | 0
- -- 26388279074008 | 0 | 0 | 0
- -- 26388279075800 | 0 | 0 | 0
- -- 28587302322826 | 0 | 0 | 0
- -- 28587302323140 | 0 | 0 | 0
- -- 28587302323831 | 0 | 0 | 0
- -- 28587302332315 | 0 | 0 | 0
- -- 28587302332388 | 0 | 0 | 0
- -- 30786325580674 | 0 | 0 | 0
- -- 30786325582071 | 0 | 0 | 0
- -- 32985348836171 | 0 | 0 | 0
- -- 32985348840421 | 0 | 0 | 0
- -- 35184372090806 | 0 | 0 | 0
- -- 35184372091151 | 0 | 0 | 0
- -- 35184372093248 | 0 | 0 | 0
- -- 35184372095848 | 0 | 0 | 0
- -- 35184372096349 | 0 | 0 | 0
- -- 35184372097346 | 0 | 0 | 0
- -- 35184372097978 | 0 | 1 | 0
- -- 35184372098113 | 0 | 0 | 0
- -- 35184372098845 | 0 | 0 | 0
- -- 35184372098880 | 0 | 0 | 0
- -- (88 rows)
- --
- -- Time: 17709.626 ms (00:17.710)
- /* Q13. Zombies in a country
- \set country '\'France\''
- \set endDate '\'2013-01-01\''::timestamp
- */
- WITH Zombies AS (
- SELECT Person.id AS zombieid
- FROM Country
- JOIN City
- ON City.PartOfCountryId = Country.id
- JOIN Person
- ON Person.LocationCityId = City.id
- LEFT JOIN Message
- ON Person.id = Message.CreatorPersonId
- AND Message.creationDate BETWEEN Person.creationDate AND :endDate -- the lower bound is an optmization to prune messages
- WHERE Country.name = :country
- AND Person.creationDate < :endDate
- GROUP BY Person.id, Person.creationDate
- -- average of [0, 1) messages per month is equivalent with having less messages than the month span between person creationDate and parameter :endDate
- HAVING count(Message.MessageId) < 12*extract(YEAR FROM :endDate) + extract(MONTH FROM :endDate)
- - (12*extract(YEAR FROM Person.creationDate) + extract(MONTH FROM Person.creationDate))
- + 1
- )
- SELECT Z.zombieid AS "zombie.id"
- , coalesce(t.zombieLikeCount, 0) AS zombieLikeCount
- , coalesce(t.totalLikeCount, 0) AS totalLikeCount
- , CASE WHEN t.totalLikeCount > 0 THEN t.zombieLikeCount::float/t.totalLikeCount ELSE 0 END AS zombieScore
- FROM Zombies Z LEFT JOIN (
- SELECT Z.zombieid, count(*) as totalLikeCount, sum(case when exists (SELECT 1 FROM Zombies ZL WHERE ZL.zombieid = p.id) then 1 else 0 end) AS zombieLikeCount
- FROM Person p, Person_likes_Message plm, Message m, Zombies Z
- WHERE Z.zombieid = m.CreatorPersonId AND p.creationDate < :endDate
- AND p.id = plm.PersonId AND m.MessageId = plm.MessageId
- GROUP BY Z.zombieid
- ) t ON (Z.zombieid = t.zombieid)
- ORDER BY zombieScore DESC, Z.zombieid
- LIMIT 100
- ;
|