Я пытаюсь создать таблицу, в которой указаны месяц, учетная запись и название продукта из нашей платежной базы данных. Однако я также хочу понять (для последующего когортного анализа), что самое раннее использование «Продукта А» также для каждой позиции. Я надеялся, что смогу сделать следующее:
SELECT
Month,
AccountID,
ProductName,
SUM(NetRevenue) AS NetRevenue,
MIN(Month) OVER(PARTITION BY AccountID, 'Product A') AS EarliestUse
FROM
<<my-billing-table>>
WHERE
NetRevenue > 0
AND AccountID IN (
SELECT DISTINCT AccountID
FROM <<my-billing-table>>
WHERE ProductName = 'Product A' AND NetRevenue > 0
)
GROUP BY 1,2,3
... но кажется, что простое использование «продукта A» в предложении OVER
не дает желаемого эффекта (кажется, просто возвращает первый месяц для AccountID).
Несмотря на то, что синтаксис в порядке и запрос выполняется, я, очевидно, что-то упускаю из-за PARTITION
в предложении OVER
. Любая помощь высоко ценится!