私は仕事から得たいくつかのデータに取り組んでおり、私の人生をはるかに簡単にするクエリを考え出そうとしています (それらのデータを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 |