Переименуйте таблицу T в свою таблицу и попробуйте это:
SELECT * FROM (
SELECT id, advertiser_id, offer_id, commission_id, commission_tier_id, creative_id, publisher_id, publisher_asset_id, source_id, impression_timestamp,
COUNT(*) OVER (PARTITION BY advertiser_id, offer_id, commission_id, commission_tier_id, creative_id, publisher_id, publisher_asset_id, source_id ORDER BY impression_timestamp RANGE 60 PRECEDING) AS DuplicateFlag
FROM T
) DetectDuplicate
WHERE DuplicateFlag > 1
EDIT : до MySQL 8 вышеуказанный запрос не мог быть выполнен и должен быть заменен запросом с JOIN (к сожалению, немного медленнее):
SELECT DISTINCT T2.*
FROM T T1
LEFT OUTER JOIN T T2
ON T1.id <> T2.id
AND T1.advertiser_id = T2.advertiser_id
AND T1.offer_id = T2.offer_id
AND T1.commission_id = T2.commission_id
AND T1.commission_tier_id = T2.commission_tier_id
AND T1.creative_id = T2.creative_id
AND T1.publisher_id = T2.publisher_id
AND T1.publisher_asset_id = T2.publisher_asset_id
AND T1.source_id = T2.source_id
AND T1.impression_timestamp >= T2.impression_timestamp - 60
WHERE T2.id IS NOT NULL
Возможен как минимум один другой синтаксис, такой как:
SELECT *
FROM T Main
WHERE EXISTS (
SELECT 1
FROM T
WHERE id <> Main.id
AND advertiser_id = Main.advertiser_id
AND offer_id = Main.offer_id
AND commission_id = Main.commission_id
AND commission_tier_id = Main.commission_tier_id
AND creative_id = Main.creative_id
AND publisher_id = Main.publisher_id
AND publisher_asset_id = Main.publisher_asset_id
AND source_id = Main.source_id
AND impression_timestamp >= Main.impression_timestamp - 60
)