I have tested with sample data and both ways are giving same answer. Have a look. Used aggregations
CREATE TABLE PerformanceTable
(
TextData VARCHAR(MAX)
, DatabaseName VARCHAR(100)
,CPU BIGINT
,READS BIGINT
,WRITES BIGINT
, Duration 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)
1st way- All other moderators have provided and this should work fine.
SELECT
TextData
,SUM(CPU) AS cpu_sum
,SUM(READS) AS Reads_sum
,SUM(WRITES) AS writes_sum
,SUM(Duration) AS duration_sum
FROM PerformanceTable
WHERE Duration >1000
GROUP BY TextData
Another way
SELECT
*
FROM
(
SELECT
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
