Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL - Selecting the top occurring entries

Tags:

sorting

mysql

Should be a simple one.

Database is mydb. One of the columns is mydata.

What SELECT query do I need in order to select the top 3 occurring results from mydata, but sorted alphabetically?

For example, if my data is this:

mydata
======
kilo (x 1 occurrence)
lima (x 9 occurrences)
golf (x 5 occurrences)
echo (x 9 occurrences)
zulu (x 8 occurrences)

How do I get it to return "echo, lima, zulu", which are the top three frequently occurring entries sorted alphabetically? Thanks!

EDIT: Just to add, they need to be distinct entries. Thanks!

like image 266
RC. Avatar asked Dec 06 '25 04:12

RC.


1 Answers

Use an inner select to select the results you want, and the outer select to put them into alphabetical order.

SELECT mydata
FROM (
    SELECT mydata
    FROM mytable
    GROUP BY mydata
    ORDER BY COUNT(mydata) DESC
    LIMIT 3
) AS T1
ORDER BY mydata

Result:

'echo'
'lima'
'zulu'

Test data:

CREATE TABLE mytable (mydata VARCHAR(100) NOT NULL);
INSERT INTO mytable (mydata) VALUES
    ('kilo'),
    ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'),
    ('golf'), ('golf'), ('golf'), ('golf'), ('golf'),
    ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'),
    ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu');
like image 101
Mark Byers Avatar answered Dec 08 '25 16:12

Mark Byers