Ранжирование клиентов по заказам по клиенту и товарам по заказу - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь ранжировать запрос не одним счетом, а двумя.

Я хочу ранжировать клиентов по позициям заказа по заказам.

WITH CTE AS
(
    SELECT 
        o.CustomerId,
        COUNT(DISTINCT o.OrderId) AS OrderCount, 
        COUNT(oi.OrderItemId) AS OrderItemCount
    FROM 
        OrderItem oi
    INNER JOIN 
        Order o ON o.OrderId = oi.OrderId
    WHERE 
        o.CategoryId = 52 -- website sales
    GROUP BY 
        o.CustomerId
)
SELECT 
    cust.Code, 
    cust.DisplayTitle,
    CTE.OrderCount,
    CTE.OrderItemCount,
    --AVG(CTE.OrderItemCount/CTE.OrderCount) AS SumProduct ????
FROM 
    CTE
INNER JOIN 
    Customer cust ON cust.CustomerId = CTE.CustomerId
GROUP BY 
    cust.Code, 
    cust.DisplayTitle,
    CTE.OrderCount,
    CTE.OrderItemCount
ORDER BY 
    SumProduct DESC

Я в основном пытаюсь реализовать эквивалент T-SQL SUMPRODUCT() в Excel.

1 Ответ

0 голосов
/ 02 мая 2018
SELECT 
    o.CustomerId,
    COUNT(DISTINCT o.OrderId) AS OrderCount, 
    COUNT(oi.OrderItemId) AS OrderItemCount,
    COUNT(oi.OrderItemId) / COUNT(DISTINCT o.OrderId) avg 
FROM OrderItem oi
INNER JOIN Order o ON o.OrderId = oi.OrderId
WHERE o.CategoryId = 52 -- website sales
GROUP BY o.CustomerId 
order by COUNT(oi.OrderItemId) / COUNT(DISTINCT o.OrderId) desc

Просто добавьте в присоединение к клиенту

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...