SóProvas


ID
2995027
Banca
FCC
Órgão
SEMEF Manaus - AM
Ano
2019
Provas
Disciplina
Banco de Dados
Assuntos

Considere a existência de duas tabelas relacionadas em um banco de dados: Pedidos e Transportador. A tabela Pedidos possui 2 campos numéricos: PedidoID (chave primária) e TransportadorID (chave estrangeira). A tabela Transportador possui o campo TransportadorID (chave primária, numérico) e TransportadorNome (cadeia de caracteres). Para listar o número de Pedidos de cada Transportador utiliza-se a instrução SQL:

Alternativas
Comentários
  • Letra E, gabarito.

    Só é meio burrice fazer o group pelo nome do transportador sendo que há o campo ID.

  • LETRA E

    Tecnicamente não existe uma resposta certa, pois os Transportadores com 0 pedidos ficariam de fora e a questão pede " Para listar o número de Pedidos de cada Transportador". Ao meu ver o certo seria um RIGHT JOIN no lugar do Left.

    Mas segue o jogo, se estiver errado e alguém puder explicar, agradeceria.

  • E.

    O enunciado solicita que a consulta SQL retorne de forma agrupada por transportador (nome) e não ordenada. Assim, a D e E estão quase idênticas, mas a E é correta devido ao uso do GROUP BY.

    O resultado seria:

    TRANSPORTADORNOME | QTD PEDIDOS

    RAPIDÃO COMETA LTDA. | 3450

    CORREIOS | 12340

  • se tivesse um group by na letra A, então a letra A seria a melhor resposta, porque ela traria inclusive os transportadores com 0 pedidos. Essa letra E tem a falha de não trazer nenhum transportador com zero pedidos

  • A) "SELECT Transportador.TransportadorNome, COUNT(Pedidos.PedidoID) AS “NumeroPedidos” FROM Pedidos RIGHT JOIN FROM Pedidos ON Pedidos.TransportadorID = Transportador.TransportadorID ORDER BY TransportadorNome"

     

    Possui QUATRO erros:

    i) está tentando fazer JOIN com a mesma tabela (Pedidos);

    ii) RIGHT JOIN FROM não é a sintaxe correta. Depois do JOIN só deveria ter o nome da tabela;

    iii) termina com ORDER BY, e a questão quer que os nomes sejam agrupados, não ordenados;

    iv) o uso do COUNT sem o GROUP BY daria um erro nesse caso, pois o campo TransportadorNome não é agregado.

     

     

    B) "SELECT Transportador.TransportadorNome, COUNT(Pedidos.PedidoID) AS NumeroPedidos FROM Pedidos FULL JOIN Transportador WHERE Pedidos.TransportadorID = Transportador.TransportadorID GROUP BY TransportadorNome"

    Deveria ter um ON onde tem o WHERE.

     

    C) "SELECT Transportador.TransportadorNome, COUNT(Pedidos.PedidoID) AS “NumeroPedidos” FROM Pedidos, Transportador INNER JOIN ON Pedidos.TransportadorID = Transportador.TransportadorID GROUP BY TransportadorNome"

    A sintaxe também está incorreta. Uma das tabelas deveria estar depois do INNER JOIN. (por ex: FROM Pedidos INNER JOIN Transportador ON).

     

    D) "SELECT Transportador.TransportadorNome, COUNT(Pedidos.PedidoID) AS NumeroPedidos FROM Pedidos LEFT JOIN Transportador ON Pedidos.TransportadorID = Transportador.TransportadorID ORDER BY TransportadorNome"

    Os mesmos erros iii) e iv) da letra A).

     

    E) "SELECT Transportador.TransportadorNome, COUNT(Pedidos.PedidoID) AS NumeroPedidos FROM Pedidos LEFT JOIN Transportador ON Pedidos.TransportadorID = Transportador.TransportadorID GROUP BY TransportadorNome"

    É a única que não tem nenhum erro de sintaxe.