sql查询所需的指导

时间:2016-05-17 14:22:16

标签: mysql sql

我有一个包含一个表的数据库,如下所示。在这里,我正在尝试编写一个查询,以显示制造最多药物的公司生产的药物名称。

通过查看表格,我们可以说出属于公司ID 1和2的药物名称 - 因为这些公司根据此表制造了最多的药物,但我不确定如何编写查询来选择我之前说过的话。

ID  | COMPANY_ID |  MEDICATION_NAME

1     1         ASPIRIN

2     1         GLUCERNA

3     2         SIBUTRAMINE

4     1         IBUPROFEN

5     2         VENOFER

6     2         AVONEN

7     4         ACETAMINOPHEN

8     3         ACETAMINO

9     3         GLIPIZIDE

请分享您的建议。谢谢!

2 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。这里首先使用子查询来获取最大数量,然后使用另一个子查询来获取具有该计数的公司,最后使用外部查询来返回结果:

select * 
from yourtable
where companyid in (
  select companyid
  from yourtable
  group by companyid
  having count(1) = (
    select count(1) cnt 
    from yourtable
    group by companyid
    order by 1 desc
    limit 1
    )
)

答案 1 :(得分:0)

此查询可能有效。我没有测试但逻辑是正确的

SELECT MEDICATION_NAME 
FROM TABLE where 
COMPANY_ID=(SELECT 
           MAX(counted) 
           FROM ( SELECT COUNT(*) AS counted FROM TABLE ) AS counts);