Mysql 使用“选择总和”查询查找总和的最大值和最小值

Mysql 使用“选择总和”查询查找总和的最大值和最小值,mysql,Mysql,我试图在mysql中回答这个问题…“什么产品卖的最多/最少?”我想在selet语句中添加max和min函数,但不确定如何或在哪里添加 这就是我目前试图添加max和min语句的内容 SELECT prod_nbr,sum(sls_qty) AS sls_qty FROM total_sales GROUP BY prod_nbr ORDER BY sls_qty DESC; 假设您使用的是MySQL 8+,这里有一个使用行数的选项: SELECT prod_nbr, sls_qt

我试图在mysql中回答这个问题…“什么产品卖的最多/最少?”我想在selet语句中添加max和min函数,但不确定如何或在哪里添加

这就是我目前试图添加max和min语句的内容

SELECT prod_nbr,sum(sls_qty) AS sls_qty
FROM total_sales
GROUP BY prod_nbr
ORDER BY sls_qty DESC;

假设您使用的是MySQL 8+,这里有一个使用
行数的选项:

SELECT
    prod_nbr,
    sls_qty,
    IF(rn_min = 1, 'min', 'max') type
FROM
(
    SELECT prod_nbr, SUM(sls_qty) AS sls_qty,
        ROW_NUMBER() OVER (ORDER BY SUM(sls_qty)) rn_min,
        ROW_NUMBER() OVER (ORDER BY SUM(sls_qty) DESC) rn_max
    FROM total_sales
    GROUP BY prod_nbr
) t
WHERE 1 IN (rn_min, rn_max)
ORDER BY sls_qty;

执行两个查询的并集

SELECT 'max' AS TYPE,
       prod_nbr,
       sum(sls_qty) AS sls_qty
FROM total_sales
GROUP BY prod_nbr
ORDER BY sls_qty DESC
UNION ALL
SELECT 'min' AS TYPE,
       prod_nbr,
       sum(sls_qty) AS sls_qty
FROM total_sales
GROUP BY prod_nbr
ORDER BY sls_qty ASC

您不需要在那里设置
max
min
。这个查询告诉你哪一个销售最多。将
desc
更改为
asc
,以获得卖得最少的。我理解这一点。但我只希望查询显示两行,即按销售数量显示的最小和最大产品。因此,请执行两个查询,并将它们与
UNION
组合,以获得两行。我将如何编写该行?如何调整该行以使其包括前3个最大值和下3个最小值?使用以下
WHERE
子句:
WHERE 3 IN(rn_min,rn_max)