Considerando os dados apresentados nas tabelas, julgue o ite...

Próximas questões
Com base no mesmo assunto
Ano: 2015 Banca: CESPE / CEBRASPE Órgão: MEC Prova: CESPE - 2015 - MEC - Desenvolvedor |
Q602417 Banco de Dados
                 
Considerando os dados apresentados nas tabelas, julgue o item subsequente, a respeito de conceitos e comandos SQL.

Assumindo que cada cantor vendeu apenas uma unidade de cada CD de sua autoria, o comando a seguir apresentará o ganho total de cada um deles.

SELECT CANTOR.NOME_CANTOR, SUM(CD.VALOR_CD)

FROM CANTOR, CD

WHERE CD.CODIGO_CANTOR = CANTOR.CODIGO_CANTOR
Alternativas

Comentários

Veja os comentários dos nossos alunos

Falta a cláusula Group By CD.CODIGO_CANTOR

Não, na verdade falta o Group By CANTOR.NOME_CANTOR, porque quando utiliza-se funções agregadas, todos os outros atributos que estiverem na cláusula SELECT (e não estiverem em funções agregadas, como SUM, MAX, AVG, COUNT ... ) DEVEM estar em Group By.
Da mesma forma, só posso usar o HAVING para os atributos em funções agregadas na cláusula SELECT.

O comentario do Lazaro está errado.

 

Siga a correta resposta do ÁLVARO CAMILO.            GROUP BY CANTOR.NOME_CANTOR

UM GROUP BY NO NOME TRARIA DUAS LINHAS DE RESPOSTA COM A SOMA DOS VALORES NO CAMPO VALOR

Fui testar o código a seguir (que gera as tabelas da questão). Vamos la!!!

CREATE TABLE cantor 

(

codigo_cantor CHAR(5),

nome_cantor VARCHAR(50),

CONSTRAINT pk_codigo_cantor PRIMARY KEY(codigo_cantor)

);

--- Tabela criada sem erro!!!!

CREATE TABLE CD 

(

codigo_cd INTEGER,

titulo_cd VARCHAR(50),

codigo_cantor CHAR(5),

valor_cd FLOAT(10),

CONSTRAINT fk_codigo_cantor FOREIGN KEY(codigo_cantor) REFERENCES cantor(codigo_cantor)

);

--- Tabela criada sem erro!!!!

--- Inserindo os valores da questão nas duas tabelas!!!

INSERT INTO cantor VALUES ('A', 'JOAO');

INSERT INTO cantor VALUES ('B', 'JOSE');

INSERT INTO CD VALUES (1, 'SERA', 'A', 15);

INSERT INTO CD VALUES (2, 'DESCOBRIMENTO', 'B', 16);

INSERT INTO CD VALUES (3, 'INDIOS', 'B', 17);

INSERT INTO CD VALUES (4, 'DOIS', 'A', 15);

INSERT INTO CD VALUES (5, 'FAROESTE', 'A', 19);

--- Dando um SELECT como o comentário mais curtido sugeriu!!!

SELECT cantor.nome_cantor, SUM(CD.valor_cd)

FROM cantor, CD

WHERE CD.codigo_cantor = cantor.codigo_cantor;

GROUP BY cantor.nome_cantor;

Dá o erro ORA-00937: not a single-group group function

Invalid statement

Tentei dar um Group By CD.CODIGO_CANTOR, como sugerido pelo Lazaro, cujo comentário tá sendo execrado, e também não executou!!!

Alguma dica, nobres bachareis? Engenheiros...???

Obs: Apenas por descarrego de consciencia, fiz um teste simples com o SUM e rodou de boa!!!

SELECT SUM(CD.valor_cd)

FROM CD

SUM(CD.VALOR_CD)

82

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo