Kaushil Rambhia
Kaushil Rambhia

Reputation: 195

Get max(top some things data) from database in mysql

Guys i want to get the top 3 disease and also their count from following table for a particular year..what query should i run?

mysql> select id,dname,d_id,entrydate from patient_master;    
+----+------------------+------+------------+    
| id | dname            | d_id | entrydate  |     
+----+------------------+------+------------+          
|  1 | Root Canal       |    1 | 2012-08-02 |         
|  2 | Cosmetic Filling |    3 | 2012-05-10 |   
|  3 | Root Canal       |    1 | 2012-05-25 |   
|  4 | High BP          |    6 | 2012-07-09 |    
|  5 | Root Canal       |    1 | 2012-07-10 |      
|  6 | Normal Filling   |    2 | 2012-05-10 |     
|  7 | Maleria          |    4 | 2012-07-10 |    
|  8 | Maleria          |    4 | 2012-07-12 |    
|  9 | Typhoid          |    5 | 2012-07-12 |    
+----+------------------+------+------------+    
9 rows in set (0.00 sec)

Upvotes: 1

Views: 186

Answers (2)

mellamokb
mellamokb

Reputation: 56779

Use a group by clause to combine results by disease, and count(*) to count the number of records for each disease. You can then order from largest to fewest and use limit 3 to get only the top 3. I have also included a where clause to filter for only records in 2012.

  select count(*), dname
    from patient_master
   where entrydate between '2012-01-01' and '2013-01-01'
group by dname
order by count(*) desc
   limit 3

Demo: http://www.sqlfiddle.com/#!2/89c06/6

Upvotes: 2

Mike Brant
Mike Brant

Reputation: 71384

SELECT d_id, dname, count(d_id) as `count`, year(entrydate) as `year`
FROM patient_master
GROUP by `year`, d_id
ORDER BY `year` DESC, `count` DESC

Note I didn't put a limit here, as if you want to get both year and count in the same query, you would need to get into writing a pretty complex query to get the top 3 per year.

This will sort by year descending and then by disease count descending within each year. You will note be able to get the row id in this query, nor should you care about that value given what you are trying to do.

Upvotes: 0

Related Questions