我有一个包含一个表的数据库,如下所示。在这里,我正在尝试编写一个查询,以显示制造最多药物的公司生产的药物名称。
通过查看表格,我们可以说出属于公司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
请分享您的建议。谢谢!
答案 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);