이 시도 :
'10.0.25.1', 255, '10.0.25.50', 500, 208, 112, 96
'10.0.25.2', 255, '10.0.25.50', 500, 48, 48, 0
'10.0.25.52', 255, '10.0.25.50', 500, 48, 48, 0
'74.26.9.40', 198, '75.48.0.25', 387, 136, 64, 72
작동 방법은 첫 번째 그룹 단방향 대화에 : 이것은 다음과 같은 결과를 얻을 수
CREATE TABLE PacketHeaders (ID INT, SrcAddress NVARCHAR(100), SrcPort INT, DestAddress NVARCHAR(100), DestPort INT, Bytes INT);
INSERT INTO PacketHeaders (ID, SrcAddress, SrcPort, DestAddress, DestPort, Bytes) VALUES
(1, '10.0.25.1', 255, '10.0.25.50', 500, 64),
(2, '10.0.25.50', 500, '10.0.25.1', 255, 80),
(3, '10.0.25.50', 500, '10.0.25.1', 255, 16),
(4, '75.48.0.25', 387, '74.26.9.40', 198, 72),
(5, '74.26.9.40', 198, '75.48.0.25', 387, 64),
(6, '10.0.25.1', 255, '10.0.25.50', 500, 48),
(7, '10.0.25.2', 255, '10.0.25.50', 500, 48),
(8, '10.0.25.52', 255, '10.0.25.50', 500, 48);
:이 테스트 데이터에
SELECT
T1.SrcAddress,
T1.SrcPort,
T1.DestAddress,
T1.DestPort,
T1.Bytes + COALESCE(T2.Bytes, 0) AS TotalBytes,
T1.Bytes AS A_to_B,
COALESCE(T2.Bytes, 0) AS B_to_A
FROM (
SELECT SrcAddress, SrcPort, DestAddress, DestPort, SUM(Bytes) AS Bytes
FROM PacketHeaders
GROUP BY SrcAddress, SrcPort, DestAddress, DestPort) AS T1
LEFT JOIN (
SELECT SrcAddress, SrcPort, DestAddress, DestPort, SUM(Bytes) AS Bytes
FROM PacketHeaders
GROUP BY SrcAddress, SrcPort, DestAddress, DestPort) AS T2
ON T1.SrcAddress = T2.DestAddress
AND T1.SrcPort = T2.DestPort
AND T1.DestAddress = T2.SrcAddress
AND T1.DestPort = T2.SrcPort
WHERE T1.SrcAddress < T1.DestAddress OR
(T1.SrcAddress = T1.DestAddress AND T1.SrcPort = T1.DestPort) OR
T2.DestAddress IS NULL
을 총 바이트 수. 이렇게하면 모든 대화가 정확히 두 번 (각 방향에 한 번) 표시됩니다. 그런 다음이 결과를 자체 조인하여 필요한 결과를 제공하고 A의 (주소, 포트)는 B보다 작아야합니다. 왼쪽 조인은 단방향 대화를 허용하는 데 사용됩니다.
각 경로가 정 반대의 항목을 가지고 있다고 가정합니다. 그래서 모두 OUTER JOIN이되어야합니다. 그러면 GROUP BY ISNULL (T1.SrcAddress, T2.DestAddress) 등이 필요합니다. – MatBailie
수정으로 외부 GROUP BY 등이 제거되었습니다.모든 패킷이 반대 방향으로가는 패킷에 해당하는 경우에만 작동합니다. (그러나 그 조건이 사실이라면, 그것은 효과가 있다고 생각합니다 ...) – MatBailie
이것은 양방향 대화에서만 작동합니다. 모든 대화가 양방향으로 이루어지는 것은 아닙니다. 어떻게 이것을 막기 위해 조인을 수정할 수 있습니까? – lumberjack4