SQL :获取具有两个突变的数据计数
SQL : get count of data which have both mutations
我有 2 个表 Mutations
和 Medications
。
我需要一个 med 名称中同时具有 mut1 和 mut2 的成员的数量
SELECT
med.Name AS medicine, COUNT(*) AS count
FROM
Mutations mut
INNER JOIN
Medications med ON med.MemberId = mut.MemberId
WHERE
mut.Mutation IN ('mut1','mut2')
GROUP BY
med.Name
HAVING
COUNT(DISTINCT mut.Mutation) = 2
如何计算同时发生突变的成员数量?
一种方法是两级聚合:
select med.name, count(*)
from (select med.name, m.memberid
from medications med join
mutations m
on m.memberid = med.memberid
where m.mutation in ('mut1', 'mut2')
group by med.name, m.memberid
having count(*) = 2
) m
group by med.name;
不清楚您需要什么计数,您的查询实际上是获取具有两种突变的药物...
如果您想要给定查询的计数,请使用子查询
SELECT COUNT(1)
FROM
(
SELECT
med.Name AS medicine
FROM
Mutations mut
INNER JOIN
Medications med ON med.MemberId = mut.MemberId
WHERE
mut.Mutation IN ('mut1','mut2')
GROUP BY
med.Name
HAVING
COUNT(DISTINCT mut.Mutation) = 2
) Q
如果你想分离 Mut1 和 mut2 用例的计数
SELECT
med.Name AS medicine,
COUNT(CASE Mutation WHEN 'Mut1' THEN 1 END) AS CountMut1
COUNT(CASE Mutation WHEN 'Mut2' THEN 1 END) AS CountMut2
FROM
Mutations mut
INNER JOIN
Medications med ON med.MemberId = mut.MemberId
WHERE
mut.Mutation IN ('mut1','mut2')
GROUP BY
med.Name
HAVING
COUNT(DISTINCT mut.Mutation) = 2
我有 2 个表 Mutations
和 Medications
。
我需要一个 med 名称中同时具有 mut1 和 mut2 的成员的数量
SELECT
med.Name AS medicine, COUNT(*) AS count
FROM
Mutations mut
INNER JOIN
Medications med ON med.MemberId = mut.MemberId
WHERE
mut.Mutation IN ('mut1','mut2')
GROUP BY
med.Name
HAVING
COUNT(DISTINCT mut.Mutation) = 2
如何计算同时发生突变的成员数量?
一种方法是两级聚合:
select med.name, count(*)
from (select med.name, m.memberid
from medications med join
mutations m
on m.memberid = med.memberid
where m.mutation in ('mut1', 'mut2')
group by med.name, m.memberid
having count(*) = 2
) m
group by med.name;
不清楚您需要什么计数,您的查询实际上是获取具有两种突变的药物...
如果您想要给定查询的计数,请使用子查询
SELECT COUNT(1)
FROM
(
SELECT
med.Name AS medicine
FROM
Mutations mut
INNER JOIN
Medications med ON med.MemberId = mut.MemberId
WHERE
mut.Mutation IN ('mut1','mut2')
GROUP BY
med.Name
HAVING
COUNT(DISTINCT mut.Mutation) = 2
) Q
如果你想分离 Mut1 和 mut2 用例的计数
SELECT
med.Name AS medicine,
COUNT(CASE Mutation WHEN 'Mut1' THEN 1 END) AS CountMut1
COUNT(CASE Mutation WHEN 'Mut2' THEN 1 END) AS CountMut2
FROM
Mutations mut
INNER JOIN
Medications med ON med.MemberId = mut.MemberId
WHERE
mut.Mutation IN ('mut1','mut2')
GROUP BY
med.Name
HAVING
COUNT(DISTINCT mut.Mutation) = 2