首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql中从数据库中获取max(top一些数据)

问在mysql中从数据库中获取max(top一些数据)
EN

Stack Overflow用户
提问于 2012-07-24 02:39:32
回答 2查看 177关注 0票数 1

伙计们,我想从一个特定的year..what查询中获得前3种疾病和它们在下表中的计数,我应该运行吗?

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-24 02:41:43

使用group by子句按疾病合并结果,使用count(*)计算每种疾病的记录数。然后,您可以从最大到最少排序,并使用limit 3仅获得前3个。我还包含了一个where子句,用于仅过滤2012中的记录。

代码语言:javascript
复制
  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

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

票数 2
EN

Stack Overflow用户

发布于 2012-07-24 02:47:02

代码语言:javascript
复制
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,也不应该考虑您正在尝试执行的操作的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11618460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档