Microsoft SQL Server. Не получается вывести Значения из Столбца 1 с наибольшим соответствием ему уникальных значений в Столбце 2

Необходима помощь! Что имеется?

  1. Есть Товар в столбце Tovar и есть Цвет товара в столбце Cvet;
  2. Количество разновидностей товаров и расцветок товаров может быть большим;
  3. Много строк с одинаковым соответствием товара и цвета;

Не совсем получается создать запрос удовлетворяющий требованиям: Необходимо вывести TOP товаров(отсортировать по убыванию), в которых присутствует наибольшее разнообразие(уникальность) расцветок.

введите сюда описание изображения

Ранее использовал указанный ниже код, но в результате значительного увеличения количества товара последующая ручная выборка стала требовать много времени да и задачи немного изменились, что и привело к необходимости решения вышеуказанной задачи.

SELECT Tovar, Cvet, count(Tovar) As col 
FROM tabl 
Group By Tovar, Cvet
HAVING count(Tovar) > 1
ORDER BY col desc

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

Автор решения: MaxDown
  1. Считаем количество цветов у товара
  2. Выводим максимальное
WITH cte (Tovar_cte, r_cte)
AS
(
SELECT
   Tovar,
   ROW_NUMBER() OVER(PARTITION BY Tovar Order BY Cvet) as r
FROM You_table
GROUP BY Tovar, Cvet
)
SELECT
   Tovar_cte as Tovar,
   MAX(r_cte) as 'count Cvet'
FROM cte
GROUP BY Tovar_cte
ORDER BY MAX(r_cte) DESC
→ Ссылка
Автор решения: Vitaliy Zlobin
SELECT  Tovar,
        COUNT(DISTINCT Cvet) AS CountCvet
FROM tabl
GROUP BY Tovar
ORDER BY CountCvet DESC
→ Ссылка