16

I have a table with several rows, for each of them I need to know the most common value.

Example:

row_1 has

car
boat
car
car
truck
truck
plane
car
car

as its values.

I need to know what is the most common value (in this case car). I have several ideas, but since I must do this for the 30 rows I would like an easy and not CPU intensive query.

Ciro Santilli OurBigBook.com
  • 347,512
  • 102
  • 1,199
  • 985
0plus1
  • 4,475
  • 12
  • 47
  • 89

2 Answers2

26

To get a list of values and the number of their appearances:

select col_name, count(col_name) c from table
group by col_name
order by c desc;

If you want only the most common value:

select col_name, count(col_name) c from table
group by col_name
order by c desc
limit 1;
Galz
  • 6,713
  • 4
  • 33
  • 39
4

I wrote the query in a way such that if there are more items with the same highest number of occurrences, you will see them all, not just one of them.

select item
from table
group by item
having count(item) = (
select count(item) as great
from table
group by item order by great desc limit 1)
Nicola Cossu
  • 54,599
  • 15
  • 92
  • 98