Considerando os dados apresentados nas tabelas, julgue o ite...
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
Comentários
Veja os comentários dos nossos alunos
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