![](/img/trans.png)
[英]How to Compare one Column of Table with other Column of other Row in SQL
[英]How to Compare one row with other rows in SQL
我有一個由團隊成員組成的數據集。
我只想計算成員2的平均值。
但是,滿足計算的條件如下:
例如,id 1讓Anna和Sam一起工作,我只想為member2(即Sam)計算
為此,我想對具有
id:2 member1:Sam member2:Sam
id:3 member1:Sam member2:Nihal
或id:4 member1:Nihal member2:Sam
然后除以不同的#ID
+----+---------+---------+-------+
| ID | member1 | member2 | score |
+----+---------+---------+-------+
| 1 | Anna | Sam | 10 |
| 2 | Sam | Sam | 30 |
| 3 | Sam | Nihal | 40 |
| 4 | Nihal | Sam | 50 |
| 5 | Sam | Anna | 20 |
| 6 | Anna | Anna | 60 |
| 7 | Nihal | May | 70 |
| 8 | May | May | 80 |
+----+---------+---------+-------+
+----+---------+---------+-------+-----+
| ID | member1 | member2 | score | AVG |
+----+---------+---------+-------+-----+
| 1 | Anna | Sam | 10 | 40 |-->AVG= 30+40+50/3
| 2 | Sam | Sam | 30 | 30 |-->AVG= score
| 3 | Sam | Nihal | 40 | 70 |-->AVG= 70/1
| 4 | Nihal | Sam | 50 | 20 |-->AVG= 30+10+20/3
| 5 | Sam | Anna | 20 | 60 |-->AVG= 60/1
| 6 | Anna | Anna | 60 | 60 |-->AVG= score
| 7 | Nihal | May | 70 | 80 |-->AVG= 80/1
| 8 | May | May | 80 | 80 |-->AVG= score
+----+---------+---------+-------+-----+
請嘗試以下操作:
select t1.*,q.avg_score
from yourtable t1
cross apply
(
select avg(score) as avg_score
from yourtable t2
where
t1.member2 in (t2.member1,t2.member2)
and t1.member1 not in (t2.member1,t2.member2)
)q
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.