2

私は仕事から得たいくつかのデータに取り組んでおり、私の人生をはるかに簡単にするクエリを考え出そうとしています (それらのデータをmysqlにインポートするのに時間がかかりました.)

さまざまな時間にさまざまな値 (面積) を持つサンプルがたくさんあるので (ベルカーブのようなもの)、最大のピークの前のすべてのピーク (面積) と最大の後のすべてのピーク (面積) を合計するだけです。各サンプルでのピーク(合計で2列)。タスクは非常に単純に聞こえますが、機能するクエリを考え出すのに非常に苦労しています。

私はそのようなことを思いつきましたが、問題は、サブクエリで複数の行が返されるため、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      |
4

2 に答える 2