sql - 如何在从另一列获取其他值的同时使用 Max?
问题描述
我是 SQL 新手,在为每个 manager_id 以及同一行中的其他信息选择列的最大值时遇到问题。
让我举个例子——考虑一下这张表:
姓名 | manager_id | 销售量 |
---|---|---|
约翰 | 1 | 100 |
大卫 | 1 | 80 |
赛琳娜 | 2 | 26 |
狮子座 | 1 | 120 |
坦率 | 2 | 97 |
萨拉 | 2 | 105 |
我期待的结果是这样的:
姓名 | manager_id | top_sales |
---|---|---|
狮子座 | 1 | 120 |
萨拉 | 2 | 105 |
我尝试使用 Max,但问题是我必须将其manager_id
与salesPerson
.
select manager_id, max(sales) as top_sales
from table
group by manager_id ;
这只是一个示例,实际查询很长,我从不同的表中获取信息。我知道我可以使用同一个表并再次加入它,但问题是正如我提到的,这个查询很长,因为我从具有多个条件的不同表中提取信息。而且我不想制作一个临时表来保存它。它应该在一个查询中完成,实际上我确实解决了这个问题,但是由于我使用了内部连接并两次制作了原始表,因此查询超长。
我的问题是我可以使用 Max 并在 name 列中有值,还是有其他方法可以解决这个问题?
感谢所有帮助
解决方案
您可以将 row_number() 与 CTE 结合使用,以获得每位经理的最高销售额,如下所示:
with MaxSales as (
select name, manager_id, sales,row_number() over (partition by manager_id order by sales desc) rownumber from table
)
select name , manager_id ,sales from MaxSales where rownumber=1
推荐阅读
- python - 如何使用 Matplotlib 绘制具有非线性 x 轴刻度的曲线?
- python - 如何使用 Python 根据当前值填充缺失值?
- javascript - 根据 AJAX 响应启动计时器
- r - 如何更改此 ggplot 代码以使其与导入的 excel 数据一起使用?
- javascript - 如何在Javascript中对forEach循环应用条件?
- android - Flutter - 如何检测webview中特定按钮的点击?
- angular - 使用不同的变量运行 Apollo Angular watchQuery() 返回缓存数据
- azure - 如何使用 Ansible 更新 Azure 应用程序网关的实例
- javascript - WebRTC 浏览器到应用,只有浏览器获取流
- python - 从数据中获取多个值