Considere as relações abaixo:
TAXI (placa, marca, anofab, licença)
CORRIDA (cliid (FK), placa (FK), datapedido, valor)
CLIENTE (cliid, nome, cpf, endereço)
Assinale como Verdadeiro a(s) consulta(s) SQL que retorne(m) a placa, a marca do taxi e a soma dos valores recebidos nas corridas somente se a soma_valores for maior ou igual a 15. Colunas a serem retornadas (renomeamento): placa, marca, soma_valores
SELECT t.placa, t.marca, SUM(valor) soma_valores FROM taxi t JOIN corrida c ON t.placa=c.placa GROUP BY t.placa, t.marca HAVING SUM(valor)>=15 ORDER BY 3 DESC;
SELECT t.placa, t.marca, SUM(valor) soma_valores FROM taxi t NATURAL JOIN corrida c GROUP BY t.placa, t.marca HAVING SUM(valor)>=15 ORDER BY 3 DESC;
SELECT t.placa, t.marca, SUM(valor) soma_valores FROM taxi t JOIN corrida c ON t.placa=c.placa HAVING SUM(valor)>=15
ORDER BY 3 DESC;
SELECT t.placa, t.marca, SUM(valor) soma_valores FROM taxi t, corrida c WHERE t.placa=c.placa GROUP BY t.placa, t.marca HAVING SUM(valor)>=15 ORDER BY soma_valores DESC;
SELECT t.placa, t.marca, SUM(valor) soma_valores FROM taxi t, corrida c GROUP BY t.placa, t.marca HAVING SUM(valor)>=15 ORDER BY soma_valores DESC;
Lista de comentários
Resposta:
Apenas a primeira consulta está correta:
SELECT t.placa, t.marca, SUM(valor) soma_valores FROM taxi t JOIN corrida c ON t.placa=c.placa GROUP BY t.placa, t.marca HAVING SUM(valor)>=15 ORDER BY 3 DESC;
Essa consulta utiliza um join para juntar as tabelas taxi e corrida, filtrando apenas as entradas cuja soma dos valores de corrida é maior ou igual a 15. A cláusula GROUP BY é utilizada para agrupar os resultados pela placa e pela marca do taxi, e a cláusula SUM é utilizada para somar os valores de corrida de cada taxi. O resultado é ordenado em ordem decrescente pela coluna soma_valores.
As outras consultas apresentam erros:
- A segunda consulta usa NATURAL JOIN, que é menos seguro do que JOIN explícito, pois junta tabelas pelo nome das colunas, e não por chaves estrangeiras. Além disso, o uso de NATURAL JOIN com duas tabelas que têm colunas com nomes iguais pode levar a resultados inesperados.
- A terceira consulta não inclui a cláusula GROUP BY, o que resulta em um erro de sintaxe. Sem ela, não é possível usar a cláusula SUM.
- A quarta consulta usa uma sintaxe antiga para join, utilizando vígulas em vez de JOIN explícito. Embora ainda seja aceita em muitos bancos de dados, essa sintaxe não é recomendada.
- A quinta consulta é semelhante à quarta, mas apresenta um erro na cláusula ORDER BY, que deve ser ordenado pela coluna soma_valores em ordem decrescente, mas usa o índice 3 em vez do nome da coluna.