表A:
字段: 关系 关系属性
1 上评
2 下平
3 中平
表B
字段: 评监人ID 受监人ID 关系
1 1 1
2 1 2
3 2 3
表C
字段: 评监人ID 分数
1 30
1 30
1 30
2 20
2 10
要求找出受监人ID=1且关系属性为上评和下平的的平均分:
结果:
字段: 关系属性 平均分
上评 30
下平 15
字段: 关系 关系属性
1 上评
2 下平
3 中平
表B
字段: 评监人ID 受监人ID 关系
1 1 1
2 1 2
3 2 3
表C
字段: 评监人ID 分数
1 30
1 30
1 30
2 20
2 10
要求找出受监人ID=1且关系属性为上评和下平的的平均分:
结果:
字段: 关系属性 平均分
上评 30
下平 15
a.关系属性,avg(c.分数) as 平均分
from
表A a,表B b,表C c
where
a.关系=b.关系 and b.评监人ID=c.评监人ID and b.受监人ID=1
group by
a.关系属性
insert into @t select 1,'上评'
union all select 2,'下平'
union all select 3,'中平'declare @a table(评监人ID int,受监人ID int,关系 int)
insert into @a select 1,1,1
union all select 2,1,2
union all select 3,2,3declare @b table(评监人ID int,分数 int)
insert into @b select 1,30
union all select 1,30
union all select 1,30
union all select 2,20
union all select 2,10
select a.关系属性,
平均分=avg(c.分数)
from @t a,@a b,@b c
where a.关系=b.关系 and b.评监人ID=c.评监人ID
group by a.关系属性
select sum(分数)/count(评监人ID)
from c
where 评监人ID=(select 评监人ID from b where 受监人ID=1 and (select count(distinct 关系属性) from a,b where a.关系=b.关系) >0 )
declare @t table(关系 int,关系属性 varchar(10))
insert into @t select 1,'上评'
union all select 2,'下平'
union all select 3,'中平'declare @a table(评监人ID int,受监人ID int,关系 int)
insert into @a select 1,1,1
union all select 2,1,2
union all select 3,2,3declare @b table(评监人ID int,分数 int)
insert into @b select 1,30
union all select 1,30
union all select 1,30
union all select 2,20
union all select 2,10
select a.关系属性,
平均分=avg(c.分数)
from @t a,@a b,@b c
where a.关系=b.关系 and b.评监人ID=c.评监人ID and b.受监人ID=1
group by a.关系属性