sql 基于其他列中的多个值进行计数 - sql 服务器管理工作室
sql counting based upon multiple values in other column - sql server management studio
我有一个 table 如下所示。我想在 usr 列中有不同的值计数,其中 pn 是 2 和 3。在下面的情况下,它将是 2,因为 usr =1 和 usr =3 在 pn 列中具有值 2 和 3。我不会考虑 usr=2 因为 id 没有 pn=3。我该怎么做?
usr pn
1 1
1 2
1 3
2 5
2 2
2 8
3 2
3 3
select count(*)
from
(
select usr
from table_like_below
where pn in (2,3)
group by usr
having count(distinct pn) = 2 -- this guarantees that usr have at least one 2 and at least one 3 in column pn
) T
这应该可以解决问题。
select count(distinct usr) from (
select usr from table t1 where pn = 2
inner join (select usr from table where pn = 3) t2
on t1.usr = t2.usr
)
我有一个 table 如下所示。我想在 usr 列中有不同的值计数,其中 pn 是 2 和 3。在下面的情况下,它将是 2,因为 usr =1 和 usr =3 在 pn 列中具有值 2 和 3。我不会考虑 usr=2 因为 id 没有 pn=3。我该怎么做?
usr pn
1 1
1 2
1 3
2 5
2 2
2 8
3 2
3 3
select count(*)
from
(
select usr
from table_like_below
where pn in (2,3)
group by usr
having count(distinct pn) = 2 -- this guarantees that usr have at least one 2 and at least one 3 in column pn
) T
这应该可以解决问题。
select count(distinct usr) from (
select usr from table t1 where pn = 2
inner join (select usr from table where pn = 3) t2
on t1.usr = t2.usr
)