-- A1. Το πλήθος των ανθρώπων που μιλούν ισπανικά ανά ήπειρο (να εμφανίζονται όλες οι ήπειροι). select continent, sum((percentage*population)/100) from country join countrylanguage on code=countrycode where language='Spanish' group by continent union select continent, 0 from country where continent not in (select continent from countrylanguage join country on countrycode=code where language='Spanish'); -- A2. Οι γλώσσες που ομιλούνται σε όλες τις ηπείρους. -- Κανονικά πρέπει να αφαιρέσουµε την Ανταρκτική καθώς δεν υπάρχει καταχώριση γλώσσας σε χώρα αυτής της ηπείρου. -- Αν δηλαδή παραλείψουµε το "where continent <> 'Antarctica'" τότε η απάντηση είναι το κενό σύνολο. -- µε µέτρηµα select language from Country C join CountryLanguage L on C.code=L.countrycode group by language having count(distinct continent) = (select count(distinct continent) from Country where continent <> 'Antarctica') -- µε σύνολα select distinct language from CountryLanguage L1 where not exists ( (select continent from Country where continent <> 'Antarctica') except (select continent from Country C join CountryLanguage L2 on C.code=L2.countrycode where L2.language = L1.language)) -- µε διπλή άρνηση select distinct language from CountryLanguage L1 where not exists (select * from Country C1 where continent <> 'Antarctica' and not exists (select * from Country C2 join CountryLanguage L2 on C2.code=L2.countrycode where L2.language=L1.language and C1.continent=C2.continent)) -- A3. Η χώρα με τις περισσότερες πόλεις. select c.name from country c join city ci on code=countrycode group by c.code, c.name having count(*)>=all(select count(*) from city group by countrycode); -- A4. Οι χώρες με πάνω από 2 επίσημες γλώσσες που έχουν πρωτεύουσα που έχει πληθυσμό άνω του 1 εκ. with FormalLang3 as( select c.* from country c join countrylanguage cl on code=countrycode where cl.isofficial='t' group by code having count(language)>2) select f.* from FormalLang3 f join city ci on id=capital where ci.population>1000000