Mysql 使用“选择总和”查询查找总和的最大值和最小值
我试图在mysql中回答这个问题…“什么产品卖的最多/最少?”我想在selet语句中添加max和min函数,但不确定如何或在哪里添加 这就是我目前试图添加max和min语句的内容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
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)