Microsoft SQL Server. Не получается вывести Значения из Столбца 1 с наибольшим соответствием ему уникальных значений в Столбце 2
Необходима помощь! Что имеется?
- Есть Товар в столбце Tovar и есть Цвет товара в столбце Cvet;
- Количество разновидностей товаров и расцветок товаров может быть большим;
- Много строк с одинаковым соответствием товара и цвета;
Не совсем получается создать запрос удовлетворяющий требованиям: Необходимо вывести TOP товаров(отсортировать по убыванию), в которых присутствует наибольшее разнообразие(уникальность) расцветок.
Ранее использовал указанный ниже код, но в результате значительного увеличения количества товара последующая ручная выборка стала требовать много времени да и задачи немного изменились, что и привело к необходимости решения вышеуказанной задачи.
SELECT Tovar, Cvet, count(Tovar) As col
FROM tabl
Group By Tovar, Cvet
HAVING count(Tovar) > 1
ORDER BY col desc
Ответы (2 шт):
Автор решения: MaxDown
→ Ссылка
- Считаем количество цветов у товара
- Выводим максимальное
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
