Поиск дубликатов по нескольким столбцам. Ошибка синтаксиса. MySQL | SQL
В таблице (что ниже) пытаюсь 3-мя способами реализовать поиск дубликатов по нескольким атрибутам. Ни один не срабатывает. Предположение вот в чем, после оператора WHERE стоит что-то не то (простейшие комбинации перебора уже исчерпаны).
- Машина просто замолкает, даже через полчаса - ничего.
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
- Способ менее похожий на решение, но выдает синтаксическую ошибку:
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
