Home > Net >  get table results by top 5 of most common table data
get table results by top 5 of most common table data

Time:04-29

example table data:

id | name | tool
--------------------
 1 | bob  |   scissor
 2 | mike |   knife
 3 | john |   thread
 4 | joe  |   ruler
 5 | kim  |   marker
 6 | dean |   board
 7 | paul |   knife
 8 | john |   scissor
 9 | kim  |   ruler
 10| mike |   scissor
 11| mike |   board
 12| joe  |   board
 13| paul |   scissor
 13| jake |   marker

and would like to get the top 5 most common from the column 'tool' which would tell me something like

1 - scissor (4)
2 - board (3)
3 - knife (2)
4 - ruler (2)
5 - marker (2)

CodePudding user response:

You can count the tools then order by the count limiting to 5.

select tool,count(tool) as nr_count
from test
group by tool
order by nr_count desc limit 5;

Result:

tool    nr_count
scissor 4
board   3
knife   2
ruler   2
marker  2

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=4c95c05c966d262547f752a2cb599b3b

Note that you still have another tool with count of 2 results the above query doesn't take in consideration. You need to apply another order by

  • Related