如何检索两个条件发生超过 1 次的记录
How to retrieve records where two conditions occur more than 1 time
我不确定我对标题问题的措辞是否正确。我想要做的是查找参数代码 94 和 95 在单个 sample_id 中一起出现的记录。到目前为止我得到的是下面的查询,但它 returns 记录了每个 sample_id.
出现不止一次的 94 或 95
SELECT
wq.wq_site_sample_result.sample_id,
wq.wq_site_sample_result.param_name
FROM
wq.wq_site_sample_result
WHERE
wq.wq_site_sample_result.pcode IN (
94,
95
)
GROUP BY
wq.wq_site_sample_result.sample_id,
wq.wq_site_sample_result.param_name
HAVING COUNT(SAMPLE_ID) >1;
您需要检查 wq.wq_site_sample_result.pcode 列
如下所示 - count(distinct wq.wq_site_sample_result.pcode)
SELECT
wq.wq_site_sample_result.sample_id,
wq.wq_site_sample_result.param_name
FROM
wq.wq_site_sample_result
WHERE
wq.wq_site_sample_result.pcode IN (
94,
95
)
GROUP BY
wq.wq_site_sample_result.sample_id,
wq.wq_site_sample_result.param_name
HAVING COUNT(distinct wq.wq_site_sample_result.pcode) >1;
你们很亲近:
SELECT ssr.sample_id
FROM wq.wq_site_sample_result ssr
WHERE ssr.pcode IN (94, 95)
GROUP BY ssr.sample_id
HAVING count(distinct ssr.pcode) = 2;
注意使用 table 别名来简化查询代码。您的问题提到了示例,因此这是唯一被选择和汇总的内容。 COUNT(DISTINCT)
是为了防止数据重复。如果没有,那么 COUNT(*)
就可以了。
不清楚ssr.param_name
在做什么。它 可能 在 HAVING
子句中是合适的。另一方面,如果可以有多个值,那么 LISTAGG()
会更合适。
我不确定我对标题问题的措辞是否正确。我想要做的是查找参数代码 94 和 95 在单个 sample_id 中一起出现的记录。到目前为止我得到的是下面的查询,但它 returns 记录了每个 sample_id.
出现不止一次的 94 或 95SELECT
wq.wq_site_sample_result.sample_id,
wq.wq_site_sample_result.param_name
FROM
wq.wq_site_sample_result
WHERE
wq.wq_site_sample_result.pcode IN (
94,
95
)
GROUP BY
wq.wq_site_sample_result.sample_id,
wq.wq_site_sample_result.param_name
HAVING COUNT(SAMPLE_ID) >1;
您需要检查 wq.wq_site_sample_result.pcode 列
如下所示 - count(distinct wq.wq_site_sample_result.pcode)
SELECT
wq.wq_site_sample_result.sample_id,
wq.wq_site_sample_result.param_name
FROM
wq.wq_site_sample_result
WHERE
wq.wq_site_sample_result.pcode IN (
94,
95
)
GROUP BY
wq.wq_site_sample_result.sample_id,
wq.wq_site_sample_result.param_name
HAVING COUNT(distinct wq.wq_site_sample_result.pcode) >1;
你们很亲近:
SELECT ssr.sample_id
FROM wq.wq_site_sample_result ssr
WHERE ssr.pcode IN (94, 95)
GROUP BY ssr.sample_id
HAVING count(distinct ssr.pcode) = 2;
注意使用 table 别名来简化查询代码。您的问题提到了示例,因此这是唯一被选择和汇总的内容。 COUNT(DISTINCT)
是为了防止数据重复。如果没有,那么 COUNT(*)
就可以了。
不清楚ssr.param_name
在做什么。它 可能 在 HAVING
子句中是合适的。另一方面,如果可以有多个值,那么 LISTAGG()
会更合适。