Professional Documents
Culture Documents
Fundo Social
Europeu Escola Secundária Ferreira de
Castro
Ano lectivo 2006/2007
Programação e Sistemas de Informação 1. Cláusulas e Funções SQL –
Resolução
Módulo 14 – Linguagem de Manipulação de Dados
1.
Descrição de todas as Lista dos nomes dos concelhos e do
a) províncias de Portugal. b) código do distrito a que pertence.
Pode ser interessante e
divertido ler a descrição e
tentar adivinhar de que
província se trata.
Permite visualizar toda a Permite visualizar os campos
c) tabela «concelho». d) «NomeConcelho», «CodDistrito» da
tabela «concelho».
Mostra a descrição da Qual é a menor área ocupada por um
e) província com código 8. f) distrito?
Executa exactamente o mesmo que a consulta anterior, uma vez que não
k) existem valores repetidos no campo NomeConcelho.
Lista para cada distrito, os nomes dos concelhos e da província a que
l) cada um pertence, com ordenação ascendente sucessivamente por nome de
distrito e de concelho.
1
União Europeia
Fundo Social
Europeu Escola Secundária Ferreira de
Castro
Encontra a maior população Encontra a menor população
x) dos distritos. y) dos distritos.
2.
a)
SELECT CodDistrito, NomeDistrito
FROM distrito
ORDER BY Populacao DESC;
b)
SELECT MAX(AreaTotal) AS AREA
FROM distrito
WHERE CodDistrito<10;
c)
SELECT CodConcelho, NomeConcelho
FROM distrito INNER JOIN concelho ON distrito.CodDistrito = concelho.CodDistrito
WHERE NomeDistrito="Viseu";
d)
SELECT CodDistrito, NomeDistrito, AreaTotal
FROM distrito
WHERE AreaTotal BETWEEN 2000 AND 5000;
e)
SELECT NomeDistrito, NomeProvincia, NomeConcelho
FROM provincia INNER JOIN (distrito INNER JOIN concelho ON distrito.CodDistrito =
concelho.CodDistrito) ON provincia.CodProvincia = concelho.CodProvincia
ORDER BY NomeDistrito, NomeProvincia, NomeConcelho;
f)
SELECT NomeDistrito, COUNT(CodConcelho) AS [Nº de Concelhos]
FROM distrito INNER JOIN concelho ON distrito.CodDistrito = concelho.CodDistrito
GROUP BY NomeDistrito;
g)
SELECT NomeDistrito, COUNT(CodConcelho) AS [Nº de Concelhos]
FROM distrito INNER JOIN concelho ON distrito.CodDistrito = concelho.CodDistrito
GROUP BY NomeDistrito
HAVING COUNT(CodConcelho)>18;
h)
SELECT NomeDistrito
FROM distrito
WHERE Populacao>1000000;
i)
SELECT Count(NomeDistrito) AS [Grandes Cidades]
FROM distrito
WHERE distrito.Populacao>1000000;
2
União Europeia
Fundo Social
Europeu Escola Secundária Ferreira de
Castro
j)
SELECT distrito.CodDistrito,NomeDistrito, COUNT(CodConcelho) AS [Nº de Concelhos]
FROM distrito INNER JOIN concelho ON distrito.CodDistrito = concelho.CodDistrito
GROUP BY distrito.CodDistrito, distrito.NomeDistrito;
k)
SELECT CodDistrito, [Populacao]/[AreaTotal] AS [Densidade Populacional]
FROM distrito
ORDER BY CodDistrito DESC;
l)
SELECT Sum(TotalDistrito) AS Total
FROM
[SELECT DISTINCT provincia.CodProvincia, Populacao as TotalDistrito
FROM provincia INNER JOIN (distrito INNER JOIN concelho ON
distrito.CodDistrito = concelho.CodDistrito) ON provincia.CodProvincia =
concelho.CodProvincia
WHERE provincia.CodProvincia=2]. AS [NovaTabela];
m)
SELECT Sum(TotalDistrito) AS Total
FROM
[SELECT DISTINCT provincia.CodProvincia, Populacao as TotalDistrito
FROM provincia INNER JOIN (distrito INNER JOIN concelho ON
distrito.CodDistrito = concelho.CodDistrito) ON provincia.CodProvincia =
concelho.CodProvincia
WHERE provincia.CodProvincia=1 AND AreaTotal<4000]. AS [NovaTabela];
n)
SELECT DISTINCT NomeDistrito, AreaTotal, Populacao
FROM distrito INNER JOIN concelho ON distrito.CodDistrito = concelho.CodDistrito
WHERE AreaTotal>5000 AND Populacao>20000;