gpt4 book ai didi

sql - 在同一查询中使用两个聚合函数 - min 和 max

转载 作者:行者123 更新时间:2023-12-04 23:20:55 25 4
gpt4 key购买 nike

这是我的产品表的数据 -

product_id  category    discount
454 C-10 10
357 C-10 9
64 C-10 10
294 C-11 17
449 C-11 17
471 C-11 17
89 C-11 12
56 C-11 10

我想获得每个产品类别的最大折扣,如果任何类别有多个具有相同折扣的产品,则具有最小折扣的产品应选择 product_id。

期望的输出-

product_id  category    discount
64 C-10 10
294 C-11 17

我尝试了以下两个查询但没有工作 -

select category,min(product_id),max(discount)
from Product
group by category

非常感谢您的帮助。谢谢!

最佳答案

在这里使用 ROW_NUMBER 很有帮助:

WITH cte AS (
SELECT product_id, category, discount,
ROW_NUMBER() OVER (PARTITION BY category
ORDER BY discount DESC, product_id) rn
FROM Product
)

SELECT product_id, category, discount
FROM cte
WHERE rn = 1;

或者,我们甚至可以在不使用子查询/CTE 的情况下执行此操作:

SELECT TOP 1 WITH TIES product_id, category, discount
FROM Product
ORDER BY
ROW_NUMBER() OVER (PARTITION BY category
ORDER BY discount DESC, product_id);

关于sql - 在同一查询中使用两个聚合函数 - min 和 max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54998930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com