Jump to content

Query SQL


JOAOBERNARD070

Recommended Posts

Boa tarde estou com algumas dificuldades em responder a esta query, alguém me pode ajudar??

Quais são os Grupos, cujos CDs têm uma avaliação média igual ou superior a 4,00? Nota: Para além da informação do grupo deve apresentar a média da avaliação dos seus CDs.

SELECT DISTINCT G.nome, C.avaliacao
FROM CD AS C, Grupo AS G, Gravacao AS Gr, Artista AS A
WHERE ( SELECT MAX(C2.avaliacao)
FROM CD AS C2)
         AND C.referencia = Gr.cdReferencia
         AND Gr.artistaReferencia = A.referencia
         AND G.referencia = A.grupoReferencia

Qual executo esta query aparece o que está no esquema abaixo e devia de aparecer apenas o grupo e a avaliação média dos CD'S

 

nome                                   avaliacao

Bonny Light Horseman         3,34

Desertshore                          3,71

Desertshore                          3,93

GNR                                      3,52

Mler Ife Dada                         0

Motorhead                             3,37

Pink Floyd                             3,45

Pink Floyd                             3,86

Pink Floyd                             3,98

Pink Floyd                             4,13

Pink Floyd                             4,3

Pink Floyd                             4,5

Sun Kil Moon                        3,25

Sun Kil Moon                        3,42

The Doors                             3,9

The Doors                            4,11

Yo La Tengo                          4,5

Link to comment
Share on other sites

Para agrupares tens de fazer um group by e se queres apenas acima de 4.0 tens de fazer um having.


No entanto, não sei se não faz mais sentido usares a função de média, AVG (se não me falha a memória).

  • Vote 1
10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

  • 1 month later...

Evite usar o distinct , deve utilizar o group by

SELECT G.nome, sum(g.avaliacao) soma, count(c.avaliacao) cont, sum(c.avaliacao)/ count(c.avaliacao) as aval

FROM CD AS C, Grupo AS G, Gravacao AS Gr, Artista AS A WHERE ( SELECT MAX(C2.avaliacao) FROM CD AS C2)          AND C.referencia = Gr.cdReferencia          AND Gr.artistaReferencia = A.referencia          AND G.referencia = A.grupoReferencia

group by g.nome
having sum(c.avaliacao)/ count(c.avaliacao)>3.5

César Faria

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.