Как найти наиболее частое значение в столбце SQL и вернуть это значение? - PullRequest
0 голосов
/ 20 мая 2019

Я пытался сделать что-то вроде этого:

select nume_produs
from incasari 
group by id
having count(nume_produs) =  max(count(nume_produs));  

но это не работает

Ответы [ 3 ]

2 голосов
/ 20 мая 2019

Для наиболее распространенного значения в столбце:

select num_produs
from (select nume_produs, count(*) as cnt,
             row_number() over (order by count(*)) as seqnum
      from incasari
      group by nume_produs
     ) i
where seqnum = 1;

Если вам нужно несколько значений в случае дубликатов, используйте rank() вместо row_number().

Если вы хотите получить наиболее распространенное значение для идентификатора , добавьте partition by:

select num_produs
from (select nume_produs, count(*) as cnt,
             row_number() over (partition by id order by count(*)) as seqnum
      from incasari
      group by nume_produs
     ) i
where seqnum = 1;
2 голосов
/ 20 мая 2019

сделать GROUP BY.Упорядочить по убыванию.Получить только первый ряд (наибольшее количество).

select nume_produs, count(*) as cnt
from incasari 
group by nume_produs
order by cnt desc
fetch first 1 row with ties
0 голосов
/ 20 мая 2019
SELECT       `nume_produs`,
             COUNT(`nume_produs`) AS `value_occurrence` 
    FROM     `incasari`
    GROUP BY `nume_produs`
    ORDER BY `value_occurrence` DESC
    LIMIT    1;

Увеличьте 1, если хотите увидеть N наиболее распространенных значений столбца.

...