首页 > 解决方案 > MYSQL:如何获得数量总和的最大值?

问题描述

所以我有这个查询:

SELECT p.pub_name, t.title, YEAR(s.ord_date) AS YEAR, SUM(s.qty) AS "QTY SUM"
FROM publishers p JOIN titles t ON p.pub_id = t.pub_id
                  JOIN sales s ON t.title_id = s.title_id
GROUP BY p.pub_name, t.title, YEAR(s.ord_date);

以及此处的查询结果:

查询结果

我如何只显示最高的QTY SUMper pub_name

如下图所示,仅显示突出显示的行...

期望的结果

标签: mysqlsql

解决方案


您可以使用窗口函数:

SELECT pty.*
FROM (SELECT p.pub_name, t.title, YEAR(s.ord_date) AS YEAR, SUM(s.qty) AS sum_qty,
             ROW_NUMBER() OVER (PARTITION BY p.pub_name ORDER BY SUM(s.qty) DESC) as seqnum
      FROM publishers p JOIN
           titles t
           ON p.pub_id = t.pub_id JOIN
           sales s
           ON t.title_id = s.title_id
      GROUP BY p.pub_name, t.title, YEAR(s.ord_date)
     ) pty
WHERE seqnum = 1;

推荐阅读