从数据库中获取最大(顶部的东西数据)在mysql
问题描述:
伙计们我想得到前3名疾病,也从他们的计数从下表特定年份..我应该运行什么查询?从数据库中获取最大(顶部的东西数据)在mysql
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)
答
使用group by
条款通过疾病的结果结合起来,并count(*)
计数的每种疾病的记录数。然后,您可以从最大到最小的顺序排列,并使用limit 3
仅获得排名前三位。我还包含了一个where
子句,用于仅筛选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
答
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
注意,如果你想每年都拿到,并在相同的查询数我没有把限制在这里,你将需要进入一个写非常复杂的查询,每年获得前3名。
这将按年降序排列,然后按疾病数量每年降序排列。你会注意到能够在这个查询中获得行ID,你也不应该在乎你想要做的事情。
您可能会发现浏览[** SQLCourse **](http://www.sqlcourse.com/index.html)等在线教程很有帮助,因为这是一个非常简单的标准查询。 – mellamokb 2012-07-23 18:44:29