Row_number() Группа?

У меня есть набор данных, содержащий столбцы Date, Cat и QTY. Я хочу добавить уникальный столбец, который учитывает только уникальные значения Cat, когда он подсчитывает количество строк. Это то, что я хочу, чтобы мой результирующий набор выглядел следующим образом:

enter image description here

Используя SQL-запрос ниже, я могу получить строку, используя функцию row_number().

Однако я не могу получить тот уникальный столбец, который я изобразил выше. Когда я добавляю группу в предложение OVER, она не работает. Есть ли у кого-нибудь идеи, как я могу использовать этот уникальный столбец count?

SELECT 
   Date,    
   ROW_NUMBER() OVER (PARTITION BY Date ORDER By Date, Cat) as ROW,
   Cat,
   Qty
FROM SOURCE

Ответ 1

Вот альтернативное решение.

Вам не нужно беспокоиться о заказе Cat. Используя следующий SQL, вы сможете получить уникальные значения для комбинации Date и Cat.

SELECT 
   Date,    
   ROW_NUMBER() OVER (PARTITION BY Date, Cat ORDER By Date, Cat) as ROW,
   Cat,
   Qty
FROM SOURCE

Ответ 2

DENSE_RANK() OVER (PARTITION BY date ORDER BY cat)