SQL Server: получение максимальной и минимальной суммы совокупности - PullRequest
0 голосов
/ 13 марта 2019

У меня есть список заказов на продукты с ProductID и заказанным количеством.

Например:

ProductID Quantity
------------------
 1         5
 2         2
 3         5
 1         2
 3         4
 2         8

Как получить только ProductID продукта, который продается больше всего и меньше всего в SQL SERVER. Я попробовал:

SELECT ProductID, SUM(Quantity) AS Total
FROM [Order Details]
GROUP BY ProductID
ORDER BY Total DESC

Теперь нужны только максимальные и минимальные значения Total.

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Используйте общее табличное выражение или производную таблицу, чтобы получить sum, а затем запросите min и max:

WITH CTE AS
(
    SELECT ProductID, sum(Quantity) as Total
    FROM [Order Details]
    GROUP BY ProductID
)

SELECT MIN(Total) As Lowest, MAX(Total) AS highest
FROM CTE
0 голосов
/ 13 марта 2019

Мы можем попробовать использовать ROW_NUMBER здесь, дважды:

WITH cte AS (
    SELECT ProductID, SUM(Quantity) AS Total,
        ROW_NUMBER() OVER (ORDER BY SUM(Quantity)) rn_least,
        ROW_NUMBER() OVER (ORDER BY SUM(Quantity) DESC) rn_greatest
    FROM [Order Details]
    GROUP BY ProductID
)

SELECT
    ProductID,
    CASE WHEN rn_least = 1
         THEN 'least' ELSE 'GREATEST' END AS label,
    Total
FROM cte
WHERE
    rn_least = 1 OR rn_greatest = 1
ORDER BY
    Total;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...