You are on page 1of 2

PRÁCTICA 7

1.-

SELECT c.name || ' ' || c.lastname AS character_name,


COUNT(cr.related_id) AS related
FROM character_relationships AS cr
RIGHT JOIN characters AS c USING (character_id)
JOIN sectors AS s ON (loc_sector_id = sector_id)
WHERE LOWER(s.name) IN ('laanxmain', 'guildsimple')
GROUP BY c.character_id
ORDER BY c.name;

2.-

SELECT t.name AS tribe_name,


COUNT(c.character_id) AS n_characters
FROM tribes AS t
JOIN tribe_members USING(tribe_id)
JOIN characters AS c USING(character_id)
JOIN sectors AS s ON(loc_sector_id = s.sector_id)
WHERE t.sector_id = s.sector_id
GROUP BY t.tribe_id
ORDER BY t.name;

3.-

SELECT s1.name AS name,


s2.name AS teleporting,
s3.name AS death
FROM sectors AS s1
LEFT JOIN sectors AS s2 ON (s1.teleporting_sector_id = s2.sector_id)
LEFT JOIN sectors AS s3 ON (s1.death_sector_id = s3.sector_id)
WHERE LOWER(s1.god_name) = 'laanx'
ORDER BY s1.name;

4.-

SELECT r.name AS race_name,


COUNT(DISTINCT c.character_id) AS n_characters,
COUNT(DISTINCT cq.quest_id) AS n_quests,
COUNT(DISTINCT cs.skill_id) AS n_skills,
COUNT(DISTINCT tm.tribe_id) AS n_tribes
FROM characters AS c
JOIN races AS r USING(race_id)
LEFT JOIN character_quests AS cq ON (cq.character_id=c.character_id)
LEFT JOIN character_skills AS cs ON (cs.character_id=c.character_id)
LEFT JOIN tribe_members AS tm ON (tm.character_id=c.character_id)
GROUP BY r.race_id
ORDER BY r.name;

5.-

SELECT t.name AS tribe_name,


COUNT(DISTINCT c.character_id) AS n_characters
FROM characters AS c
JOIN tribe_members AS tm USING(character_id)
RIGHT JOIN tribes AS t USING(tribe_id)
GROUP BY t.tribe_id
ORDER BY t.name;

6.-

SELECT COALESCE(t.name, 'NON_MEMBERS') AS tribe_name,


COUNT(DISTINCT c.character_id) AS n_characters
FROM characters AS c
LEFT JOIN tribe_members AS tm USING(character_id)
FULL OUTER JOIN tribes AS t USING(tribe_id)
GROUP BY t.tribe_id
ORDER BY 1;

You might also like