Поиск дубликатов по нескольким столбцам. Ошибка синтаксиса. MySQL | SQL

В таблице (что ниже) пытаюсь 3-мя способами реализовать поиск дубликатов по нескольким атрибутам. Ни один не срабатывает. Предположение вот в чем, после оператора WHERE стоит что-то не то (простейшие комбинации перебора уже исчерпаны).

Таблица

  1. Машина просто замолкает, даже через полчаса - ничего.
SELECT * FROM sales
WHERE region IN (SELECT region FROM sales GROUP BY region HAVING COUNT(*) > 1)

AND totalrevenue IN (SELECT totalrevenue FROM sales GROUP BY totalrevenue  HAVING COUNT(*) > 1) 

AND TotalCost IN (SELECT TotalCost FROM sales GROUP BY TotalCost HAVING COUNT(*) > 1)

AND TotalProfit IN (SELECT TotalProfit FROM sales GROUP BY TotalProfit HAVING COUNT(*) > 1) 

ORDER BY country
  1. Способ менее похожий на решение, но выдает синтаксическую ошибку:
SELECT * FROM sales 

WHERE **>>>че-т неправильно здесь<<<** TotalRevenue, TotalCost, TotalProfit, COUNT(totalrevenue) as cnt

GROUP BY TotalRevenue, TotalCost, TotalProfit

HAVING COUNT(cnt > 1)

Ответы (1 шт):

Автор решения: Марина Николаева

Можно использовать оконные функции:

    WITH a AS(
    SELECT *, ROW_NUMBER()
    OVER(PARTITION BY TotalR, TotalC, 
    TotalP) AS dubl
    From t2
    )
    SELECT * FROM a WHERE dub>1
    
→ Ссылка