• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gurzi

Duvida simples

15 mensagens neste tópico

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

assim já dá

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

FROM bbc

WHERE Region='Europe'

é assim a forma correcta?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SELECT name,gdp

from bbc

where gdp = (select max(gdp) from bbc where region='Europe')

será assim ? :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

Find the largest country in each region:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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')

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê lá se é isto que queres:

SELECT region, MAX(GDP) as gdp

FROM bbc

group by region

0

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