Sql - realziar duas count
Pessoal, Boa tarde.
Preciso realizar duas count. Por favor poderia me ajudar?
cheguei a fazer dessa forma
select city, count(city) as ''anuncio por cidade'', neighborhood, count(neighborhood) as ''anuncio por bairro'' from tb_listings
group by city, neighborhood
Porém me trás duas tabelas mas a ultima coluna "Anuncio por barro trás o mesmo resultado que "anuncio por cidade"
---
Tabela foi feita assim
CREATE TABLE tb_listings (
"advertiser_id" varchar,
"listing_id" varchar,
"portal" varchar,
"city" varchar,
"neighborhood" varchar);
Preciso realizar duas count. Por favor poderia me ajudar?
cheguei a fazer dessa forma
select city, count(city) as ''anuncio por cidade'', neighborhood, count(neighborhood) as ''anuncio por bairro'' from tb_listings
group by city, neighborhood
Porém me trás duas tabelas mas a ultima coluna "Anuncio por barro trás o mesmo resultado que "anuncio por cidade"
---
Tabela foi feita assim
CREATE TABLE tb_listings (
"advertiser_id" varchar,
"listing_id" varchar,
"portal" varchar,
"city" varchar,
"neighborhood" varchar);
Guilherme Alves
Curtidas 0
Respostas
Emerson Nascimento
30/07/2019
Da forma como foi feito, o resultado das duas colunas será igual, visto que você agrupou pelos 2 campos que quer contar.
Publique alguns registros e dê um exemplo de como espera o resultado da consulta.
Publique alguns registros e dê um exemplo de como espera o resultado da consulta.
GOSTEI 0
Guilherme Alves
30/07/2019
Da forma como foi feito, o resultado das duas colunas será igual, visto que você agrupou pelos 2 campos que quer contar.
Publique alguns registros e dê um exemplo de como espera o resultado da consulta.
Publique alguns registros e dê um exemplo de como espera o resultado da consulta.
Preciso saber qual a proporção de anúncios que um determinado bairro tem em relação à cidade em que está situado, A query deverá retornar: a cidade, o bairro, o total de anúncios do bairro, o total de anúncios da cidade e a proporção em porcentagem.
"listing_id" código do anuncio (Aqui eu usei count, para saber quantidade de anúncios)
"city" cidade
"neighborhood" bairro
GOSTEI 0
Emerson Nascimento
30/07/2019
veja se isso te ajuda:
pode ter algum erro de sintaxe, mas a base é essa aí.
select tab.*, (('anuncios por bairro' / 'anuncios por cidade') * 100) as 'participacao do bairro' from ( select tl.city, tl.neighborhood, count(distinct tl.advertiser_id) as 'anuncios por bairro', ( select count(distinct tl.advertiser_id) from tb_listings tl2 where tl2.city = tl.city ) as 'anuncios por cidade' from tb_listings tl group by tl.city, tl.neighborhood ) tab
pode ter algum erro de sintaxe, mas a base é essa aí.
GOSTEI 0
Guilherme Alves
30/07/2019
veja se isso te ajuda:
pode ter algum erro de sintaxe, mas a base é essa aí.
select tab.*, (('anuncios por bairro' / 'anuncios por cidade') * 100) as 'participacao do bairro' from ( select tl.city, tl.neighborhood, count(distinct tl.advertiser_id) as 'anuncios por bairro', ( select count(distinct tl.advertiser_id) from tb_listings tl2 where tl2.city = tl.city ) as 'anuncios por cidade' from tb_listings tl group by tl.city, tl.neighborhood ) tab
pode ter algum erro de sintaxe, mas a base é essa aí.
Perfeito Emerson, eu cheguei algo semelhante e logo em seguida vc enviou sua resposta. Obrigado!
O problema agora é na divisão, está dando
"O tipo de dados de operando varchar é inválido para o operador divide."
GOSTEI 0
Emerson Nascimento
30/07/2019
na consulta que você criou ou na que eu te passei?
GOSTEI 0
Guilherme Alves
30/07/2019
na consulta que você criou ou na que eu te passei?
nas duas.
Fiz igual a você
GOSTEI 0
Alex Lekao
30/07/2019
Olá, bom dia!!
Vou me intrometer. rsrsr
Verificou se um dos dois esta retornando NULL e isso não está interferindo? ou o valor do divisor está zero?
Espero ter ajudado.
Vou me intrometer. rsrsr
Verificou se um dos dois esta retornando NULL e isso não está interferindo? ou o valor do divisor está zero?
Espero ter ajudado.
GOSTEI 0
Guilherme Alves
30/07/2019
Olá, bom dia!!
Vou me intrometer. rsrsr
Verificou se um dos dois esta retornando NULL e isso não está interferindo? ou o valor do divisor está zero?
Espero ter ajudado.
Vou me intrometer. rsrsr
Verificou se um dos dois esta retornando NULL e isso não está interferindo? ou o valor do divisor está zero?
Espero ter ajudado.
Na linha da visão eu cheguei a isso
(select count(neighborhood) / count(city)from tb_listings)
Mas estou tendo retorno "1"
GOSTEI 0
Emerson Nascimento
30/07/2019
veja assim (a única mudança é a nomenclatura dos campos):
se ainda não der o resultado esperado, publique alguns registros da tabela pra que seja possível fazer um teste aqui com dados reais, por que fazer "a olho" é bem complicado...
select tab.*, ((anuncios_por_bairro / anuncios_por_cidade) * 100) as participacao_do_bairro from ( select tl.city, tl.neighborhood, count(distinct tl.advertiser_id) as anuncios_por_bairro, ( select count(distinct tl.advertiser_id) from tb_listings tl2 where tl2.city = tl.city ) as anuncios_por_cidade from tb_listings tl group by tl.city, tl.neighborhood ) tab
se ainda não der o resultado esperado, publique alguns registros da tabela pra que seja possível fazer um teste aqui com dados reais, por que fazer "a olho" é bem complicado...
GOSTEI 0
Guilherme Alves
30/07/2019
veja assim (a única mudança é a nomenclatura dos campos):
se ainda não der o resultado esperado, publique alguns registros da tabela pra que seja possível fazer um teste aqui com dados reais, por que fazer "a olho" é bem complicado...
select tab.*, ((anuncios_por_bairro / anuncios_por_cidade) * 100) as participacao_do_bairro from ( select tl.city, tl.neighborhood, count(distinct tl.advertiser_id) as anuncios_por_bairro, ( select count(distinct tl.advertiser_id) from tb_listings tl2 where tl2.city = tl.city ) as anuncios_por_cidade from tb_listings tl group by tl.city, tl.neighborhood ) tab
se ainda não der o resultado esperado, publique alguns registros da tabela pra que seja possível fazer um teste aqui com dados reais, por que fazer "a olho" é bem complicado...
link do fiddle para ajudar a enteder
http://sqlfiddle.com/#!15/1d25e/316
a porcentagem (ultima coluna) está dando sempre 1
GOSTEI 0
Emerson Nascimento
30/07/2019
tente com esta instrução:
que é diferente daquela que você colocou no fiddle
http://sqlfiddle.com/#!15/1d25e/356
select tab.*, (((anuncios_por_bairro * 1.00000) / anuncios_por_cidade) * 100) as perc_participacao_do_bairro from ( select tl.city, tl.neighborhood, count(distinct tl.advertiser_id) as anuncios_por_bairro, ( select count(distinct tl2.advertiser_id) from tb_listings tl2 where tl2.city = tl.city ) as anuncios_por_cidade from tb_listings tl group by tl.city, tl.neighborhood ) tab
que é diferente daquela que você colocou no fiddle
http://sqlfiddle.com/#!15/1d25e/356
GOSTEI 0
Guilherme Alves
30/07/2019
tente com esta instrução:
que é diferente daquela que você colocou no fiddle
http://sqlfiddle.com/#!15/1d25e/356
select tab.*, (((anuncios_por_bairro * 1.00000) / anuncios_por_cidade) * 100) as perc_participacao_do_bairro from ( select tl.city, tl.neighborhood, count(distinct tl.advertiser_id) as anuncios_por_bairro, ( select count(distinct tl2.advertiser_id) from tb_listings tl2 where tl2.city = tl.city ) as anuncios_por_cidade from tb_listings tl group by tl.city, tl.neighborhood ) tab
que é diferente daquela que você colocou no fiddle
http://sqlfiddle.com/#!15/1d25e/356
Deu certo da sua forma.
Sabe dizer o pq o que eu fiz não estava indo?
Muito obrigado, ajudou muito
GOSTEI 0