1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

boas.... tenho a seguinte tabela...

Discussão em 'Programação' iniciada por NelsonBN, 27 de Junho de 2008. (Respostas: 5; Visualizações: 691)

  1. boas.... tenho a seguinte tabela...

    [​IMG]

    e queria fazer uma função tipo "moda" em MySQL

    ou seja, queria fazer uma consulta que me fosse só devolvido o nome e numero de vezes que esse nome aparece...

    neste caso era "pedro | 4"

    tentei com este código, nas não resultou:

    select max(x), nome
    from (
    select nome, count(nome) as x
    from tab
    group by nome
    )
    group by nome

    alguém me sabe como posso fazer isso??
    obrigado....

    enganei-me o titulo do tópico...

    era: (Função "moda" em MySQ)

    não consigo mudar, se os administradores do fórum poderem, alteram, se faz favor.
     
    Última edição pelo moderador: 27 de Junho de 2008
  2. meiokilo

    meiokilo Power Member

    Muito simples:

    SELECT count(nome),nome from tab group by nome;
     
  3. mas isso vai aparecer o numero de vezes que cada nome aparece....

    o que eu quero é que aparece somente o nome que aparece mais vezes....

    é uma espécie do máximo dessa consulta que fizeste
     
  4. MPalhas

    MPalhas Power Member

    SELECT count(nome) as total,nome from tab group by nome ORDER BY total DESC LIMIT 1;

    não sei se aquele order by funciona por não ser um campo nativo da tabela. alguém que confirme
     
  5. AliFromCairo

    AliFromCairo Power Member

    Sim, funciona.
     
  6. aqui fica a minha função final...

    SELECT nome, count(nome) as cont
    FROM tab
    GROUP BY nome
    ORDER BY cont desc, nome desc
    LIMIT 1


    graças ao user "MPalhas" consegui resolver o meu problema... o segredo da coisa estava em usar o LIMIT 1

    obrigado MPalhas....
     

Partilhar esta Página