SQL查询总收益最高的source 是否需先分组SUM再取MAX值
收入最高source查询方案说明
不需要拆分为两次独立查询实现需求,根据你的使用场景可以选择更简洁的实现方式:
- 如果你只需要取任意一个收入最高的source(无并列或者仅需一条结果),直接分组求和后倒序排序取第一条即可,适配MySQL、PostgreSQL等绝大多数主流数据库:
SELECT source, SUM(revenue) AS total_revenue FROM 你的表名 GROUP BY source ORDER BY total_revenue DESC LIMIT 1;
- 如果你需要兼容无LIMIT语法的数据库,或是需要返回所有收入并列最高的source,可以用嵌套子查询一次性完成计算:
SELECT source, total_revenue FROM ( SELECT source, SUM(revenue) AS total_revenue FROM 你的表名 GROUP BY source ) AS source_rev WHERE total_revenue = ( SELECT MAX(total_rev) FROM (SELECT SUM(revenue) AS total_rev FROM 你的表名 GROUP BY source) AS max_calc );
两种方案都不需要你手动拆分两次查询调用,数据库会自动完成内部的执行逻辑优化。
内容的提问来源于stack exchange,提问作者Mohsen
相关产品推荐
相关产品推荐

