我有一個查詢,回傳指定SQL實體的性能資料。我遇到的問題是在不同的時間范圍內回傳相同的文本資料。我正在尋找一種方法來總結相同的文本資料行,并回傳總cpu、持續時間、讀、寫。
謝謝你的幫助。
SELECT TOP 40 HostName, databaseName, ApplicationName,
LoginName, CPU, TextData,
讀數, 寫數, 持續時間, 開始時間, 結束時間
FROM dbo.PerformanceTable
WHERE Duration >/span> 10000
uj5u.com熱心網友回復:
沒有樣本資料,很難建議一個解決方案。如果我沒有理解錯的話,你想要每個HostName、DatabaseName、ApplicationName、TextData的總cpu、持續時間、讀、寫,不管它們的啟動時間或結束時間。
SELECT HostName, DatabaseName, ApplicationName,TextData,
sum(CPU), sum(Reads)。sum(Writes), sum(Duration)
FROM dbo.PerformanceTable
group by HostName, DatabaseName, ApplicationName,TextData
WHERE Duration > 10000
order by HostName, DatabaseName, ApplicationName,TextData
根據你添加的截圖,我修改了我的答案:
SELECT DatabaseName, TextData,
sum(CPU) total_CPU , sum(Reads) total_Reads, sum(Writes) total_Writes , sum(Duration) total_Duration
FROM dbo.PerformanceTable
group by DatabaseName, TextData
WHERE Duration > 10000
order by DatabaseName, TextData
uj5u.com熱心網友回復:
你只是想要聚合嗎?
你只是想要聚合嗎?
SELECT TextData,
SUM(Reads), SUM(Writes), SUM(Duration)。
FROM dbo.PerformanceTable
WHERE Duration >/span> 10000
GROUP BY TextData;
uj5u.com熱心網友回復:
我已經用樣本資料進行了測驗,兩種方式都給出了相同的答案。請看一下。使用的聚合
CREATE TABLE PerformanceTable
(
TextData VARCHAR(MAX)
, 資料庫名稱 VARCHAR(100)
,CPUBIGINT(>)。
,READS BIGINT
,寫BIGINT
,持續時間Bigint。
)
INSERT INTO PerformanceTable (TextData,DatabaseName,CPU, READS, WRITES, Duration) VALUES ('text', 'master', 45632589,2589633,15106, 1457889)
,('text', 'master', 45678999, 4666767,1001,10002)
,('text1', 'DatabSeName', 45678999, 6778888,45689,10256)
,('text1', 'DatabSeName', 546789, 6778888,56378,14578)
,('text2', 'MsDb', 546789, 6778888,457896,478999)
第一種方式--所有其他版主都提供了,這應該可以正常作業。
SELECT
編碼
,SUM(CPU) AS cpu_sum
,SUM(READS) AS Reads_sum
,SUM(WRITES) AS writes_sum
,SUM(Duration) AS duration_sum
FROM PerformanceTable
WHERE Duration >/span>1000
GROUP BY TextData
另一種方法
SELECT
*
from
(
SELECT[/span
ROW_NUMBER() OVER( PARTITION BY TextData ORDER BY TextData ) AS Row_id
,TextData
,SUM(CPU) AS cpu_sum
,SUM(READS) AS Reads_sum
,SUM(WRITES) AS writes_sum
,SUM(Duration) AS duration_sum
FROM PerformanceTable
GROUP BY TextData
) AS A WHERE
A.row_id = 1
and A.duration_sum >1000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/311064.html
標籤:


