首页 > 解决方案 > 分组后的最大值与总和

问题描述

我试图从这两个表中获取客户和发票信息:每个国家/地区每年的发票总额!所以我写的是:

SELECT SUM(i.total) AS Total_invoice, strftime(‘%Y’, i.InvoiceDate) AS year, c.country
FROM invoice i JOIN
     customer c
     ON i.CustomerId = c.CustomerId
GROUP BY 2,3
ORDER BY 1 DESC;

所以我得到了每年的发票总额!现在,如果我想要每个国家/地区的最大(总计),你怎么办?例如,我想为每个国家/地区提供最大(总计)、年份和国家/地区!你能帮忙吗?谢谢你在这里输入图片描述

标签: sqlgroup-bysummax

解决方案


例如,我想为每个国家/地区提供最大(总计)、年份和国家/地区!

为此,请使用窗口函数:

SELECT yc.*
FROM (SELECT SUM(i.total) AS Total_invoice, strftime(‘%Y’, i.InvoiceDate) AS year, c.country,
             ROW_NUMBER() OVER (PARTITION BY c.country ORDER BY SUM(i.total) DESC) as seqnum
      FROM invoice i JOIN
           customer c
           ON i.CustomerId = c.CustomerId
      GROUP BY 2, 3
     ) yc
WHERE seqnum = 1
ORDER BY 1 DESC;

推荐阅读