日期:2014-05-16 浏览次数:20896 次
select 人员 from tb group by 人员 having count(*)=3
------解决方案--------------------
select 人员
from tt group by 人员
having count(distinct 时间)=3
union all
select 人员
from tt group by 人员
having count(distinct 时间)=2
union all
select 人员
from tt group by 人员
having count(distinct 时间)=1
------解决方案--------------------
不能
3天内都有记录的:
sELECT * FROM ttl4 a WHERE EXISTS(SELECT 1 FROM ttl4 WHERE a.`时间`+2=`时间`+0 AND a.`人员`=`人员`
)
AND EXISTS(SELECT 1 FROM ttl4 WHERE a.`时间`+1=`时间`+0 AND a.`人员`=`人员`);
结果:b c
只在第一天有记录的,其他2天无记录的:
SELECT * FROM ttl4 a WHERE NOT EXISTS(SELECT 1 FROM ttl4 WHERE a.`时间`+2=`时间`+0 AND a.`人员`=`人员`
)
AND NOT EXISTS(SELECT 1 FROM ttl4 WHERE a.`时间`+1=`时间`+0 AND a.`人员`=`人员` AND a.`时间`<`时间`
)
AND a.`时间`<>(SELECT MAX(`时间`) FROM ttl4)
结果:a
只在2-3天有记录的,第一天没有记录的:
SELECT * FROM ttl4 a WHERE
NOT EXISTS(SELECT 1 FROM ttl4 WHERE a.`时间`+0=`时间`+2 AND a.`人员`=`人员`)
AND NOT EXISTS(SELECT 1 FROM ttl4 WHERE a.`时间`+0=`时间`+1 AND a.`人员`=`人员` )
AND
a.`时间`<>(SELECT MIN(`时间`) FROM ttl4)
结果:d