Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Gurzi

Duvida simples

Mensagens Recomendadas

Gurzi    2
Gurzi

tenho uma tabela com um GDP e regioes(eg.Europe,Africa) e nome do pais (eg. Mocambique,Portugal)

SELECT MAX(GDP), name

FROM bbc

WHERE Region='Europe'

ora quero saber o maximo gdp existente na regiao europa e que devolva nao so o maximo mas tb o nome do pais...

porque é que este código não dá ?

SELECT clause contains both column expressions and set function expressions (SQL-42000)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HecKel    52
HecKel

Tenho ideia que te falta qualquer coisa..., tipo algo que te obrigue a que o name corresponda mesmo ao GDP, que tal anexares ao Where mais uma condição,

SELECT (select MAX(GDP) from bbc) as MGdp, name

FROM bbc

WHERE Region='Europe' and MGdp = GDP

Tenta isto..., não garanto mesmo nada..., mas da forma como tens cheira-me k isso vai colocar uma coluna toda igual com o MAX do GDP e a outra coluna com todos os "names" da região "Europe"...

Provavelmente um inner join aí..., :S mas não tenho qualquer certeza...

abraços, HecKel

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
unsignedint    0
unsignedint

O correcto será:

SELECT name,gdp

FROM bbc

WHERE gdp = ( SELECT MAX(gdp) FROM bbc WHERE region='Europe') AND region='Europe';

Tens que acrescentar a condição AND region='Europe' para que o GDP MAX corresponda novamente a regiao desejada

caso contrario, se tiveres varias regios com o mesmo GDP max ele vai devolver-te todos.

Não sei se me fiz perceber.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

sim mas se tirar o AND region ='Europe' ele devolve o mesmo..

eu queria era saber o maior gdp da europa, claro que se ouver 2 iguais convem que ele os diga visto que o gdp é tipo o produto interno bruto

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    75
M6

Que grande confusão...

O que está ai a faltar é um agrupador.

Ora experimenta lá com Group By:

SELECT MAX(GDP), name
FROM bbc
WHERE Region='Europe'
GROUP BY Name, GDP

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    75
M6

A que me está a fazer mais confusão é esta

bbc(name, region, area, population, gdp)

Isso é só a descrição da tabela.

Find the largest country in each region:

Essa é fácil:

select name from bbc

where GDP > (select max(GDP)from bbc where REGION = 'Europe')

:P

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    75
M6

não dá o resultado pretendido m6

http://sqlzoo.net/1a.htm

2a Which countries have a GDP greater than any European country? [Give the name only.]

Isto dá o resultado pretendido, embora não tenha a certesa de que seja a melhor forma de o fazer:

SELECT name

FROM bbc

WHERE GDP = (select max(GDP)

from bbc where

region = 'Europe')

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade