いくつかのトラフィック フロー データを選択し、60 秒のバケットにバケット化されたさまざまなトラフィック方向の合計を作成しようとしています。簡略化した表を以下に示します (タイムスタンプは UNIX エポックです)。
Timestamp Source Destination Count
1 inside outside 5
2 inside outside 6
3 outside inside 7
65 inside inside 4
66 inside outside 6
72 inside outside 7
現在のクエリ (バケット化を行いますが、方向については何もありません)
SELECT sum(count) AS total FROM table GROUP BY round(timestamp/60)
これにより、次のような60秒ごとの「バケット」の合計数が得られます
Count
18
10
7
さて、私が迷っているところです(クライアントコードでこれを行うことができますが、可能であればSQLでやりたいと思います)。内部がソース、宛先が外部であるすべての行に対してインバウンドと呼ばれる合計、ソースがソースで内部が宛先であるすべての行に対してアウトバウンドと呼ばれる合計、およびソースと宛先の両方が内部である内部と呼ばれる行が必要です。 . まだ 60 秒のバケットでグループ化されています。つまり、私が戻したいのは次のとおりです。
Inbound Outbound Internal
7 11 0
0 6 4
0 7 0
私の SQL foo は弱く、どこから始めればよいか本当にわかりません (サブセレクトが必要だと思いますが、それを構築する方法がわかりません)。