2013-10-19 164 views
1

早上好。我有这个表:MySQL查询平均值

mysql> select * from Data; 
+---------------------------+--------+-------+ 
| affyId     | exptId | level | 
+---------------------------+--------+-------+ 
| 31315_at     | 3  | 250 | 
| 31324_at     | 3  | 91 | 
| 31325_at     | 1  | 191 | 
| 31325_at     | 2  | 101 | 
| 31325_at     | 4  | 51 | 
| 31325_at     | 5  | 71 | 
| 31325_at     | 6  | 31 | 
| 31356_at     | 3  | 91 | 
| 31362_at     | 3  | 260 | 
| 31510_s_at    | 3  | 257 | 
| 5321_at     | 4  | 90 | 
| 5322_at     | 4  | 90 | 
| 5323_at     | 4  | 90 | 
| 5324_at     | 3  | 57 | 
| 5324_at     | 4  | 90 | 
| 5325_at     | 4  | 90 | 
| AFFX-BioB-3_at   | 3  | 97 | 
| AFFX-BioB-5_at   | 3  | 20 | 
| AFFX-BioB-M_at   | 3  | 20 | 
| AFFX-BioB-M_at   | 5  | 214 | 
| AFFX-BioB-M_at   | 7  | 20 | 
| AFFX-BioB-M_at   | 8  | 40 | 
| AFFX-BioB-M_at   | 9  | 20 | 
| AFFX-HSAC07/X00351_M_at | 3  | 86 | 
| AFFX-HUMBAPDH/M33197_3_st | 3  | 277 | 
| AFFX-HUMTFFR/M11507_at | 3  | 90 | 
| AFFX-M27830_3_at   | 3  | 271 | 
| AFFX-MurIL10_at   | 3  |  8 | 
| AFFX-MurIL10_at   | 5  |  8 | 
| AFFX-MurIL10_at   | 6  |  4 | 
| AFFX-MurIL2_at   | 3  | 20 | 
| AFFX-MurIL4_at   | 5  | 78 | 
| AFFX-MurIL4_at   | 6  | 20 | 
| U95-32123_at    | 1  | 128 | 
| U95-32123_at    | 2  | 128 | 
| U98-40474_at    | 1  | 57 | 
| U98-40474_at    | 2  | 57 | 
+---------------------------+--------+-------+ 
37 rows in set (0.00 sec) 

如果我想寻找在所有实验的每个阵列探测器(affyId)的平均表达水平(水平),我做SELECT affyId, AVG(level) AS average FROM Data GROUP BY affyId;

不过,我想不出如何查找每个实验的每个阵列探针(affyId)的平均表达水平......它必须与最后一个查询类似,但我没有获得好的结果......有什么帮助?

PD:有人告诉我如果有人解决我的问题,我应该给一些声望或点击某个绿色按钮...是不是?我该怎么做?我是这个网站很新...

+0

您可以通过单击答案分数下的复选标记标记答案为已接受。当你有15点声望时,你也可以快速回答。 –

回答

0

这会为每个affyId平均:

SELECT affyId, AVG(level) AS average FROM Data GROUP BY affyId 

这平均为每exptId :

SELECT exptId, AVG(level) AS average FROM Data GROUP BY exptId 

并且这是每个affidId中每个exptId的平均值:

SELECT affyId, exptId, AVG(level) AS average FROM Data GROUP BY exptId, affyId 
0

只需添加到group by条款

SELECT affyId, exptId, AVG(level) AS average 
FROM Data 
GROUP BY affyId, exptId;