我正在处理一些从工作中获得的数据,我正在尝试提出一个查询,让我的生活变得更加轻松(我花时间在 mysql 上导入这些数据。)
我有一堆在不同时间具有不同值(面积)的样本(有点像钟形曲线),所以我需要做的就是将最大峰值之前的每个峰值(面积)和最大峰值之后的每个峰值(面积)相加每个样本的峰值(总共两列)。这个任务听起来很简单,但我很难想出一个有效的查询。
我想出了类似的东西,但问题是我不能在 where 子句中进行“分组”,因为子查询中返回了多行,所以我无法比较样本中的值。我尝试了几种不同的方法,但它们都无济于事。任何帮助将不胜感激。
SELECT Sample_name, sum(per_area) As '% area'/*For the areas before the peak.*/
FROM W_data.SEC_results
Where retention between /*retention = time */
0
AND
(( select retention
from W_data.SEC_results
where per_area = (
select max(per_area)
from W_data.SEC_results /* select the largest area in the entire set, instead of a specific samples */
)))
group by vial;
桌子:
+----------------------------------+------+-------------+----------+
| Sample_name | vial | retention | per_area |
+----------------------------------+------+-------------+----------+
| a | 74 | 14.146 | 0.08 |
| a | 74 | 16.624 | 99.79 |
| a | 74 | 20.343 | 0.13 |
| b | 75 | 12.438 | 0.16 |
| b | 75 | 13.653 | 1.85 |
| b | 75 | 16.588 | 97.95 |
| b | 75 | 20.316 | 0.04 |
+-------------+----------------+-------------+
| sample_name | Area( before) |Area (after) |
+-------------+----------------+-------------+
| a | 0.08 | 0.13 |
| b | 2.01 | 0.04 |