求高手指导:如何多次查询?比如
时间 人员
20120910 a
20120910 b
20120910 c
20120911 b
20120911 c
20120911 d
20120912 b
20120912 c
20120912 d这个是数据库表结构,为时间和人员,现需要统计3天内有记录人员,以及2天内有记录人员,以及只有1天记录的人员:
结果应该是
3天内都有记录的: b、c 2
只在第一天有记录的,其他2天无记录的: a 1
只在2-3天有记录的,第一天没有记录的: d 1这样一个结果,请问高手如何查询?
时间 人员
20120910 a
20120910 b
20120910 c
20120911 b
20120911 c
20120911 d
20120912 b
20120912 c
20120912 d这个是数据库表结构,为时间和人员,现需要统计3天内有记录人员,以及2天内有记录人员,以及只有1天记录的人员:
结果应该是
3天内都有记录的: b、c 2
只在第一天有记录的,其他2天无记录的: a 1
只在2-3天有记录的,第一天没有记录的: d 1这样一个结果,请问高手如何查询?
解决方案 »
- 求一个关系数据库的查询问题,万分感谢
- mysql id in(1,2,3)查询怎么取每个id最大3条数据
- c连接postgresql问题:无法定位序数284于动态链接库SSLEAY32.dll上
- 关于 Row based replication
- 请教一个mysql结果显示问题
- [==难题==]mysql时间段转成时间行
- MySql 导入文本如何禁止排序
- 一个关联表更新和性能问题
- mysql类型转换函数?????
- 請教:下載了 mysql4.1.0-win32-apache.zip ,解壓後發現沒有setup文件,我以前裝的mysql3.2.3安裝過後的目錄一樣,不知4.1的是如何安裝
- oracle语句转mysql
- MySQL中,求一条SQL语句
from tb
group by 人员
having count(*)=3
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