123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- \set tag '\'Slovenia\''
- -- materialize=> \i q07.sql
- -- relatedTag.name | count
- -- ------------------------------------------+-------
- -- Humayun | 10
- -- Genghis_Khan | 9
- -- Muammar_Gaddafi | 9
- -- Sammy_Sosa | 8
- -- Thomas_Hardy | 7
- -- Dalai_Lama | 6
- -- Fernando_González | 6
- -- Haile_Selassie_I | 6
- -- Mariano_Rivera | 6
- -- Peter_Hain | 6
- -- Ronald_Reagan | 6
- -- Bertrand_Russell | 5
- -- Bill_Clinton | 5
- -- Bob_Dole | 5
- -- Diana,_Princess_of_Wales | 5
- -- Dimitri_Tiomkin | 5
- -- Duchy_of_Warsaw | 5
- -- Dustin_Hoffman | 5
- -- Gerald_Ford | 5
- -- Indonesia | 5
- -- Julius_Caesar | 5
- -- Monaco | 5
- -- Netherlands | 5
- -- Nicaragua | 5
- -- Poland | 5
- -- Sierra_Leone | 5
- -- Silvio_Berlusconi | 5
- -- Soviet_Union | 5
- -- Sudan | 5
- -- Tiger_Woods | 5
- -- Albert_Einstein | 4
- -- Arthur_Wellesley,_1st_Duke_of_Wellington | 4
- -- Australia | 4
- -- Axis_powers | 4
- -- Batavian_Republic | 4
- -- Bosnia_and_Herzegovina | 4
- -- Clark_Gable | 4
- -- Colin_Powell | 4
- -- Edward_IV_of_England | 4
- -- Elizabeth_II | 4
- -- Etruscan_civilization | 4
- -- Fidel_Castro | 4
- -- Freddie_Mercury | 4
- -- George_Gershwin | 4
- -- German_Empire | 4
- -- Ghana | 4
- -- Greece | 4
- -- Gustav_Mahler | 4
- -- Imelda_Marcos | 4
- -- India | 4
- -- James_Buchanan | 4
- -- Joseph_Stalin | 4
- -- Leo_Tolstoy | 4
- -- Lewis_Carroll | 4
- -- Louis_Philippe_I | 4
- -- Martin_Luther | 4
- -- Martin_Luther_King,_Jr. | 4
- -- Montenegro | 4
- -- Monty_Python | 4
- -- Moon_River | 4
- -- Nicolas_Sarkozy | 4
- -- Puerto_Rico | 4
- -- Raphael | 4
- -- Richard_Rodgers | 4
- -- Rwanda | 4
- -- Saint_Pierre_and_Miquelon | 4
- -- Samuel_Pepys | 4
- -- The_Bahamas | 4
- -- Tori_Amos | 4
- -- Turks_and_Caicos_Islands | 4
- -- Under_Pressure | 4
- -- Vatican_City | 4
- -- Vladimir_Lenin | 4
- -- Wales | 4
- -- William_McKinley | 4
- -- Abraham_Lincoln | 3
- -- Al_Gore | 3
- -- Alfred,_Lord_Tennyson | 3
- -- Algeria | 3
- -- Andy_Roddick | 3
- -- Aristophanes | 3
- -- Azad_Hind | 3
- -- Baby,_I_Love_Your_Way | 3
- -- Bangladesh | 3
- -- Batman | 3
- -- Bill_Cosby | 3
- -- Bing_Crosby | 3
- -- Bolivia | 3
- -- British_North_America | 3
- -- British_Overseas_Territories | 3
- -- Burma | 3
- -- Carl_Gustaf_Emil_Mannerheim | 3
- -- Cecil_B._DeMille | 3
- -- Charles,_Prince_of_Wales | 3
- -- Charles_de_Gaulle | 3
- -- Charlton_Heston | 3
- -- Christina_Aguilera | 3
- -- Christopher_Lee | 3
- -- Chuck_Berry | 3
- -- Chulalongkorn | 3
- -- (100 rows)
- --
- -- Time: 17272.877 ms (00:17.273)
- /* Q7. Related topics
- \set tag '\'Enrique_Iglesias\''
- */
- WITH MyMessage AS (
- SELECT m.MessageId
- FROM Message_hasTag_Tag m, Tag
- WHERE Tag.name = :tag and m.TagId = Tag.Id
- )
- SELECT RelatedTag.name AS "relatedTag.name"
- , count(*) AS count
- FROM MyMessage ParentMessage_HasTag_Tag
- -- as an optimization, we don't need message here as it's ID is in ParentMessage_HasTag_Tag
- -- so proceed to the comment directly
- INNER JOIN Message Comment
- ON ParentMessage_HasTag_Tag.MessageId = Comment.ParentMessageId
- -- comment's tag
- LEFT JOIN Message_hasTag_Tag ct
- ON Comment.MessageId = ct.MessageId
- INNER JOIN Tag RelatedTag
- ON RelatedTag.id = ct.TagId
- WHERE TRUE
- -- comment doesn't have the given tag
- AND Comment.MessageId NOT In (SELECT MessageId FROM MyMessage)
- AND Comment.ParentMessageId IS NOT NULL
- GROUP BY RelatedTag.Name
- ORDER BY count DESC, RelatedTag.name
- LIMIT 100
- ;
|