sql - 根据另一列的总和选择列

标签 sql tsql

假设我有

SalesManagerId, SaleAmount, ProductId

我要总结SaleAmount对于每个( SalesManagerIdProductId )并获取 ProductId最大 sum(SaleAmount) .

这在一个查询中是可能的吗?

例子:
1, 100, 1
1, 200, 1
1, 600, 1
1, 400, 2
2, 100, 3
3, 100, 4
3, 100, 4
2, 500, 6
3, 100, 5

结果:
1, 900, 1
2, 500, 6
3, 200, 4

最佳答案

如果您有可用的分析函数,您可以使用 RANK()
就像是:

SELECT SalesManagerId, ProductId, Total
FROM (
  SELECT SalesManagerId,
         ProductId, 
         SUM(SaleAmount) as Total,
         RANK() OVER(PARTITION BY SalesManagerId 
                     ORDER BY SUM(SaleAmount) DESC) as R
  FROM <Table name>
  GROUP BY SalesManagerId, ProductId) as InnerQuery
WHERE InnerQuery.R = 1

关于sql - 根据另一列的总和选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4109622/

相关文章:

sql - 调整日期以匹配保存的星期几

sql-server - 如何防止sql语句被零除错误

对表 B 范围内的表 A 值进行 SQL 联接

sql - 哪里可以学SQL出数据的方式

mysql - 在 select 语句中更新 mysql

sql - 更新数据库架构 Doctrine 时执行 sql 脚本

mysql - 如何从一对多关系的 "many"表中选择具有两个特定子 ID 的父 ID?

sql-server - SQL Server : combining multiple rows into one row

SQL更新与连接

sql - 用值替换 NULL