Jump to content
TrymBeast

[MySQL] Valor mais repetido num campo da tabela

Recommended Posts

TrymBeast

Olá!

Como faço para ver qual é o valor mais vezes repetido num determinado campo e que devolva o número de repetições desse valor.

Eu queria usar isso para fazer as estatísticas de acesso ao site, para poder dizer qual é o browser mais usado, etc..

Agradeço desde já a vossa ajuda!

Share this post


Link to post
Share on other sites
Tiago Salgado

Acho que tens a função Max() que te devolve isso. Tipo:

Select Max(Campo)

From tabela

Algo do genero

Share this post


Link to post
Share on other sites
saramgsilva

Acho que tens a função Max() que te devolve isso. Tipo:

Select Max(Campo)

From tabela

Algo do genero

acho que nao é isso que ele pretende......

mas sim:

select contador. nome_browser, max(contador.num_browser)
from
(
Select   nome_browser,  Count(campo) as num_browser
from tabela
) as contador

pode haver 1 implementacao melhor..mas eu pensei assim...  :dontgetit:

Share this post


Link to post
Share on other sites
Gurzi

tofas percebi tudo menos a parte do AS contador  e o as num_browser

tipo no num_browser á frente iria aparecer o resultado de count (campo) certo ?

o as contador é que ja n entendo a funcao

Share this post


Link to post
Share on other sites
ouvi_dizer

Em MySql

Select count(*) total from tabela [where ....] group by campo order by total desc LIMIT 1;

Oracle

Select count(*) total from tabela where rownum=1 group by campo order by total desc;

Share this post


Link to post
Share on other sites
ouvi_dizer

tofas percebi tudo menos a parte do AS contador  e o as num_browser

tipo no num_browser á frente iria aparecer o resultado de count (campo) certo ?

o as contador é que ja n entendo a funcao

a palavra reservada AS significa que o que vem a seguir é um alias do nome real do campo.

Select campo as batatas from tabela  significa que o resultado serao batatas ao inves de campo.

Basicamente serve para mudar nomes de campo, tabelas, funções de grupo etc.

Share this post


Link to post
Share on other sites
saramgsilva

tofas percebi tudo menos a parte do AS contador  e o as num_browser

tipo no num_browser á frente iria aparecer o resultado de count (campo) certo ?

o as contador é que ja n entendo a funcao

a palavra reservada AS significa que o que vem a seguir é um alias do nome real do campo.

Select campo as batatas from tabela  significa que o resultado serao batatas ao inves de campo.

Basicamente serve para mudar nomes de campo, tabelas, funções de grupo etc.

isso mesmo e quando faço as contador

digo que o resultado /  tabela

SELECT  nome_browser,  Count(campo) AS num_browser

FROM tabela

vai ter o nome de contador ...  :P

Share this post


Link to post
Share on other sites
pedrotuga

PPL... atenção... o mysql só suporta subqueries a partir da versão 5, que ainda não está instalada na maior parte dos servidores.

epa... deixa ca ver...

pa...  tas a usar php? é que, uma vez que nao vais poder usar subqueries, seja melhor ideia usares mais do que um query.

um para pegares os valores distintos todos (usa a fincao distinct do mysql)

outro para contar o numero de ocorrencias de cada um (usa a funcao count do mysql)

poes tudo para dentro de um array php usando ciclos

e usas a funcao max do php para pegar o indice do MR BIG :D

pa... desculpa nao escrevi código... tou a cair de sono...

basicamente é usar o mysql_query e o mysql_fetch_array duas vezes com um ciclo extra para preencheres o teu array.

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.