2 つの SQL クエリを組み合わせる際の支援を求めています (または実現可能性についての意見を提供してください)。これらは、WAN 帯域幅の割り当てを計画するために、当社の保健局ネットワーク サービス グループによって個別に使用されます。当社のネットワーク監視システムは、MS SQL Server 2012 をデータベースとして使用しています。
最初のクエリは、WAN リンクの平均使用率が過去 30 日間で 90% を超えたときにメトリックを引き出します。これは私が作成したものではありませんが、使用頻度の高いネットワークに適したプロキシのようです。「where」句に2つの日時ステートメントがある理由がわかりません:
DECLARE @StartDate DateTime
DECLARE @EndDate DateTime
SET @StartDate =CAST((ROUND(CAST(GetDate() - 30 AS FLOAT), 0, 1)) as datetime)
SET @EndDate = GetDate()
SELECT
Nodes.HA,
Nodes.Site,
Nodes.Address,
Nodes.City,
Nodes.SiteType,
Interfaces.WANFeed,
(Interfaces.InBandwidth / 1000000) As Subscribed_Mbps,
Count(*) as SaturationEvents
FROM
Interfaces
INNER JOIN InterfaceTraffic_Detail ON Interfaces.InterfaceID = InterfaceTraffic_Detail.InterfaceID
INNER JOIN Nodes ON Interfaces.NodeID = Nodes.NodeID
WHERE
(NOT (Interfaces.WANFeed IS NULL))
AND (InterfaceTraffic_Detail.DateTime > DATEADD(day, -30, GETDATE()))
AND (InterfaceTraffic_Detail.In_Averagebps / Interfaces.InBandwidth > .9)
AND (Nodes.SiteType = 'Acute')
AND (DateTime between @StartDate and @EndDate)
GROUP BY
Nodes.HA,
Nodes.SiteType,
Nodes.Site,
Nodes.Address,
Nodes.City,
Interfaces.WANFeed,
Interfaces.InBandwidth
Order By SaturationEvents Desc
Sample output (cleaned)
HA SITE Address City SiteType WANFeed Subscribed_Mbps Saturation Events
--- --- --- --- Acute Primary 10 252
--- --- --- --- Acute Primary 10 152
--- --- --- --- Acute Primary 100 104
--- --- --- --- Acute Primary 10 57
NMS ベンダーから提供された例に基づいて、2 番目のクエリを作成しました。95 パーセンタイルの使用率について報告します。
DECLARE @StartDate DateTime
DECLARE @EndDate DateTime
SET @StartDate =CAST((ROUND(CAST(GetDate() - 30 AS FLOAT), 0, 1)) as datetime)
SET @EndDate = GetDate()
SELECT
Nodes.HA,
Nodes.Site,
Nodes.Address,
Nodes.City,
Interfaces.WANFeed,
Nodes.SiteType,
(Interfaces.InBandwidth / 1000000) As Subscribed_Mbps,
Interfaces.InterfaceId,
Nodes.NodeID,
Nodes.Caption AS NodeName,
Interfaces.Caption AS Interface_Caption,
Maxbps_In95,
Maxbps_Out95,
Maxbps_95
FROM Nodes
INNER JOIN Interfaces ON Nodes.NodeID = Interfaces.NodeID
INNER JOIN (
SELECT InterfaceID,
dbo.GetInBps95th(InterfaceID,@StartDate ,@EndDate ) AS Maxbps_In95,
dbo.GetOutBps95th(InterfaceID,@StartDate ,@EndDate ) AS Maxbps_Out95,
dbo.GetMaxBps95th(InterfaceID,@StartDate ,@EndDate ) AS Maxbps_95
FROM InterfaceTraffic
WHERE InterfaceTraffic.DateTime >= @StartDate AND InterfaceTraffic.DateTime <= @EndDate
GROUP BY InterfaceID
) TrafficStat
ON Interfaces.InterfaceID = TrafficStat.InterfaceID
WHERE
(NOT (Interfaces.WANFeed IS NULL)) AND
(Nodes.SiteType = 'Acute') AND
(Interfaces.WANFeed <> 'Secondary')
ORDER BY HA,NodeName, Interface_Caption
Sample Output (cleaned)
SITE Address City SiteType WANFeed Subscribed_Mbps InterfaceID NodeID Hostname Interface_Caption Maxbps_In95 Maxbps_Out95 Maxbps_95
--- --- --- Primary Acute 10000 25899 3516 --- --- 2.84E+08 3.92E+08 4.01E+08
--- --- --- Primary Acute 20000 23428 3508 --- --- 7.44E+08 3.50E+08 7.52E+08
--- --- --- Primary Acute 10000 23354 3508 --- --- 5.74E+08 4.61E+08 6.46E+08
--- --- --- Primary Acute 10000 23368 3508 --- --- 2.28E+08 4.59E+07 2.28E+08
--- --- --- Primary Acute 1000 11389 1232 --- --- 8.42E+07 8.55E+07 1.06E+08
--- --- --- Primary Acute 1000 29360 1234 --- --- 6.65E+07 3.95E+07 7.46E+07
私の希望は、それらを 1 つのレポートに結合できることです (一部のサイトのみが飽和し、すべてのサイトが 95 パーセンタイルになります)。
これを見てくれてありがとう。