2つのテーブルがあります。1つはジョブ用で、もう1つは接続用です。1つのジョブに多くの接続を設定できます。ConnetionのPKはconnid+タイムスタンプであり、JobのJOBIDを指す外部キー(JOBID)を持っています。
JOBID | NAME
-------+-------
id1 | Name of Job 1
id2 | Job 2's Name
CONNID | TIMESTAMP | JOBID | AMOUNT
-------+-------+--------+----------
012 | doesn't | id1 | 11
012 | matter | id1 | 15
012 | | id1 | 20
012 | | id1 | 30
020 | | id1 | 2
020 | | id1 | 5
549 | | id2 | 19
549 | | id2 | 30
549 | | id2 | 50
549 | | id2 | 57
549 | | id2 | 60
したがって、私がやりたいのは、接続テーブルから、各ジョブの各接続の範囲の合計を取得することです。したがって、job-id1の場合は22である(30-11)+(5-2)が必要であり、job-id2の場合は41である(60-19)が必要です。接続ごとに..
SELECT
CONNID ,
MAX(AMOUNT) - MIN(AMOUNT) AS range
FROM Connection
GROUP BY CONNID
...しかし、私はsqlに精通していないため、さらに何が必要かを理解できません(数年前に大学で単一のデータベースクラスを受講した場合のように)。それに加えて、ジョブテーブルから取得する必要があるため、ジョブの名前でソートする必要があります。これにより、さらに複雑なレイヤーが追加されると確信しています。
基本的に、結果セットは次のようになります。
NAME | range
--------------+------
Name of Job 1 | 22
Job 2's Name | 41
結局、これを過去24時間だけ実行できるようにしたいのですが、これは、WHERE句を追加するだけで、非常に簡単なはずです。
私が望んでいる回答には、JOBIDを使用したConnectionテーブルのクエリ(回答の最初の部分のジョブ名は気にしない)と、実際に探しているクエリの両方のクエリが含まれます。これで上記の結果セットが得られるので、そこに到達するために必要な追加の手順を明示的に確認できます。