Listar apenas as 10 maiores cidades com clientes cadastrados

SQL

Banco de Dados

12/11/2018

Possuo duas tabelas "cidades" e "clientes". A tabela cidades possui (codcidade, nomecidade, uf) a clientes (codcliente, nomecliente, codcidade). Preciso listar as 10 cidades com mais clientes cadastrados.
CIDADES (CODCIDADE,NOMECIDADE,UF) values (''277'',''SAO FRANCISCO DE PAU'',''RS''); (CODCIDADE,NOMECIDADE,UF) values (''278'',''SAO FRANCISCO DO SUL'',''SC''); (CODCIDADE,NOMECIDADE,UF) values (''279'',''SAO GABRIEL'',''RS'');
CLIENTES (CODCLIENTE,NOMECLIENTE,CODCIDADE) values (''863'',''DARK AMERICAS LLC'',''379''); (CODCLIENTE,NOMECLIENTE,CODCIDADE) values (''864'',''MARCELO AUGUSTO KRUGER PAGEL'',''289''); (CODCLIENTE,NOMECLIENTE,CODCIDADE) values (''865'',''ALEX SANDRO BARBOSA SOARES'',''97'');
Paola Santos

Paola Santos

Curtidas 1

Melhor post

Emerson Nascimento

Emerson Nascimento

12/11/2018

algo assim:
select top 10
   cid.codcidade, cid.nomecidade, cid.uf, count(*) totclientes
from cidades cid
inner join clientes cli on cli.codcidade = cid.codcidade
group by cid.codcidade, cid.nomecidade, cid.uf
order by count(*) desc
GOSTEI 3

Mais Respostas

Paola Santos

Paola Santos

12/11/2018

O código funciona porém não resulta apenas nos 10 primeiros, todas as cidades aparecem. E o top 10 não funciona aparece o erro "palavra-chave FROM não localizada onde esperada".
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/11/2018

Vai depender do banco de dados.

No SQLServer
select top 10
   cid.codcidade, cid.nomecidade, cid.uf, count(*) totclientes
from cidades cid
inner join clientes cli on cli.codcidade = cid.codcidade
group by cid.codcidade, cid.nomecidade, cid.uf
order by count(*) desc

No Firebird
select first 10
   cid.codcidade, cid.nomecidade, cid.uf, count(*) totclientes
from cidades cid
inner join clientes cli on cli.codcidade = cid.codcidade
group by cid.codcidade, cid.nomecidade, cid.uf
order by count(*) desc

No MySQL
select
   cid.codcidade, cid.nomecidade, cid.uf, count(*) totclientes
from cidades cid
inner join clientes cli on cli.codcidade = cid.codcidade
group by cid.codcidade, cid.nomecidade, cid.uf
order by count(*) desc
limit 10

GOSTEI 0
Paola Santos

Paola Santos

12/11/2018

Uso o oracle
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/11/2018

No Oracle
select * from
( select
    cid.codcidade, cid.nomecidade, cid.uf, count(*) totclientes
  from cidades cid
  inner join clientes cli on cli.codcidade = cid.codcidade
  group by cid.codcidade, cid.nomecidade, cid.uf
  order by count(*) desc ) 
rownum < 11
GOSTEI 0
POSTAR