表PROBE看起来像这样:
'ProbeID'----- 'TranscriptID' ---- 'Start'---- 'End'
'1056'-----------'7981326'----------'1013'---'1010'
'1057'-----------'7878826'----------'1011'---'1015'
etc..
表EXPRESSION2如下所示:
'ProbeID'----- 'SampleID' ---- 'Value'
'10425'---------'7981326'-----'16.55''
'11123'---------'7878826'----- '3.55'
etc..
我需要找到转录本中最大的100个差异(即取探针的平均值)。
基本上,我需要将EXPRESSION2表的ProbeID与PROBE表中的TranscriptID相关联,并计算前100名的平均值。
我尝试了下面的代码,但不断返回“null”。任何替代脚本将不胜感激。我想我错过了什么。
EXPRESSION2表没有空值,fyi
`选择平均值(值)
来自expression2
where probeID in
(
select P.ProbeId
from Probe P
join Transcript T on P.TranscriptID = T.TranscriptID
)`
限制100;`
答案 0 :(得分:0)
如果要消除空值
select e.probeID, avg(value) as avarage
from expression2 e
inner join
(
select P.ProbeId
from Probe P
join Transcript T on P.TranscriptID = T.TranscriptID
) p on e.probeID = p.probeID
where e.value is not null
group by e.probeID
如果你想把它们当作0
select e.probeID, avg(COALESCE(value,0)) as avarage
from expression2 e
inner join
(
select P.ProbeId
from Probe P
join Transcript T on P.TranscriptID = T.TranscriptID
) p on e.probeID = p.probeID
group by e.probeID
答案 1 :(得分:0)
您使用的是哪个DBMS?重要的是示例中的两个表中没有匹配的ProbeID,但是有匹配的TranscriptID / SampleID对吗?
Select Top 100
p.TranscriptID,
Avg(e.Value)
From
Probe p
Inner Join
Expression2 e
on p.ProbeID = e.ProbeID
Group By
p.TranscriptID
Order By
2 Desc