我有一张桌子。
select * from Group
Owner Member1 Member1_Value Member2 Member2_Value
Kelly Nicol 2 Julie 4
Nicol Julie 4 Kelly 3
Julie Kelly 5 Nicol 3
现在我需要从我们的会员中获取Avege值。
Owner Member1 Member1_Value Member2 Member2_Value Avg
Kelly Nicol 2 Julie 5 3.5
Nicol Julie 4 Kelly 2 2.5
Julie Kelly 5 Nicol 3 4.5
例如:Kelly的Avg 3.5来自Nicol,2分,Julia分数为5分,Avg分数为3.5分。和尼科尔一样得到平均2.5,因为凯利给了2分,而朱莉给了3分。
那么如何从一个sql语句中获取Avg colum
感谢您的回答
由于
答案 0 :(得分:1)
如果我理解正确,那么它应该有效:
select *, cast((Member1_Value + Member2_Value) as Decimal(10,2))/2 [Avg] from Group
答案 1 :(得分:1)
我想说你想要的是这个,但是你应该考虑对该表进行规范化,以便能够更容易地进行这类查询:
SELECT
Name, AVG(Value) AS Value
FROM
(
SELECT
Member1 AS Name,
Member1_Value As Value
FROM Group
UNION ALL
SELECT
Member2 AS Name,
Member2_Value As Value
FROM Group
) Normalised
GROUP BY Name
通过
更好的表结构会员(MemberId,姓名) 集团(的GroupId) GroupMember(MemberId,GroupId) 资格(ProvideMemberId,ReceivingMemberId,Value)
或类似的东西
答案 2 :(得分:1)
这似乎是一个非常复杂的数据结构。通常,拥有member1
和member2
等列是数据库设计不佳的标志。你应该真正规范化表格。
您似乎希望其他成员的贡献来自表中的匹配行。我认为以下是您想要的:
select g.owner, (gm1.member2_value + gm2.member1_value) / 2.0
from group g join
group gm1
on g.owner = gm1.member1 join
group gm2
on g.owner = gm2.member2;