Jump to content
JOAOBERNARD070

Query SQL

Recommended Posts

JOAOBERNARD070

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

Share this post


Link to post
Share on other sites
M6

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."

 

Share this post


Link to post
Share on other sites
pc.cesar

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

 

Share this post


Link to post
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.