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;