34,837
社区成员




with tTask (id, sessionId, zd1, zd2) as
(
select 1, 1, 1, 0 union all
select 2, 1, 1, 1 union all
select 3, 2, 0, 0 union all
select 4, 3, 1, 0 union all
select 5, 3, 1, 0 union all
select 6, 3, 1, 0 union all
select 7, 4, 2, 0 union all
select 8, 4, 1, 1 union all
select 9, 5, 1, 1 union all
select 10, 5, 1, 1 union all
select 11, 6, 1, 0 union all
select 13, 6, 1, 0 union all
select 14, 6, 0, 0
)
, tSession (sessionId, userId) as
(
select 1, 1 union all
select 2, 2 union all
select 3, 3 union all
select 4, 4 union all
select 5, 5 union all
select 6, 4 union all
select 7, 5
)
, tUser (userId, userName)as
(
select 1, 'A' union all
select 2, 'B' union all
select 3, 'C' union all
select 4, 'D' union all
select 5, 'E'
)
, data as
(
select sessionid, count(distinct zd1) as dCntZd1, count(distinct zd2) as dCntZd2, min(zd1) as minzd1d, min(zd2) as minzd2, max(zd2) as maxzd2
from tTask
group by sessionid
)
select tuser.* from data
inner join tuser on tuser.userid = data.sessionid
where dCntZd1 = 1 and minzd1d = 1 and ((dCntZd2=1 and minzd2=0) or (dCntZd2=2 and minzd2=0 and maxzd2=1))
select tuser.* from
(
select sessionid, count(distinct zd1) as dCntZd1, count(distinct zd2) as dCntZd2, min(zd1) as minzd1d, min(zd2) as minzd2, max(zd2) as maxzd2
from tTask
group by sessionid
)data
inner join tuser on tuser.userid = data.sessionid
where dCntZd1 = 1 and minzd1d = 1 and ((dCntZd2=1 and minzd2=0) or (dCntZd2=2 and minzd2=0 and maxzd2=1))