recherche

Maison  >  Questions et réponses  >  le corps du texte

Requête SQL : trouver l'élément avec la fréquence la plus élevée

J'essaie d'écrire une requête SQL pour trouver le mode, c'est-à-dire l'élément qui apparaît plus de fois que les autres éléments. Par exemple :

2,2,1,1---->在这里,输出应该为空(1和2都出现了两次)

    3,3,3----->在这里,输出也应该为空(没有第二个元素)

    3,3,1----->在这里,输出应该是3。(3的出现次数大于1的出现次数)

Voici les 3 conditions utilisées pour le trouver. Comment puis-je le mettre en œuvre ?

P粉903969231P粉903969231449 Il y a quelques jours604

répondre à tous(1)je répondrai

  • P粉162773626

    P粉1627736262023-09-13 00:50:40

    Vous pouvez compter le nombre de valeurs, trouver les plus fréquentes, et également filtrer en fonction du nombre de valeurs :

    select x.*
    from (select val,
                 count(*) as cnt,
                 row_number() over (order by count(*) desc ) as seqnum,
                 count(*) over () as num_vals
                 count(*) over (partition by count(*)) as cnt_cnt
          from table 
          group by val
         ) x
    where cnt_cnt = 1 and seqnum = 1 and num_vals > 1;

    En fait, vous pouvez utiliser having子句和order by pour réaliser :

    select val
    from (select val, count(*) as cnt,
                 count(*) over () as num_values
          from table 
          group by val
         ) v
    where num_values > 1
    order by cnt desc;

    répondre
    0
  • Annulerrépondre