postgresql - 在查询中获取最高和最低价格和卖家
问题描述
cod_Prod product seller price
123 A XPTO 10
123 A POTY 20
123 A MUY 15
我查询产品的最高和最低价格如下:
select cod_Prod, product, max(price) as maxprice, min(price) as minprice
from tablename
group by cod_Prod, product
我明白了,这是正确的:
cod_Prod product maxprice minprice
123 A 20 10
如何在同一查询中获得最高和最低价格的卖家,如下输出:
cod_Prod product maxprice seller_maxprice minprice seller_minprice
123 A 20 POTY 10 XPTO
解决方案
与旋转逻辑一起使用ROW_NUMBER
将是一种方法:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY cod_Prod ORDER BY price) rn_low,
ROW_NUMBER() OVER (PARTITION BY cod_Prod ORDER BY price DESC) rn_high
FROM tablename
)
SELECT
cod_Prod,
product,
MAX(price) FILTER (WHERE rn_high = 1) AS maxprice,
MAX(seller) FILTER (WHERE rn_high = 1) AS seller_maxprice,
MAX(price) FILTER (WHERE rn_low = 1) AS minprice,
MAX(seller) FILTER (WHERE rn_low = 1) AS seller_minprice
FROM cte
GROUP BY
cod_Prod,
product;
演示
推荐阅读
- python - 使用 cython 比 struct.pack 更快
- javascript - 如何使用javascript或react检查touchevent是否存在?
- python - Tiktok Webscraping 使用 Beautifulsoup,但没有从频道获取视频 url 或视频 id
- python - 我可以将列表中的 2 个连续空字符串合并为 1 个空字符串,这样当我们有 4 个空字符串时,它应该合并并生成 2 个空字符串
- php - laravel + react 不使用 localhost 加载 React 的东西(没有 php artisan serve)
- spring-boot - Spring Boot logback-spring.xml 在路径 /var/log 下创建一个日志文件,即使在 xml 和 application.properties 文件中定义了自定义日志路径
- .net-core - 验证注解 - 实体框架核心
- flutter - 无法升级 Flutter:未配置源存储库
- c# - 字符串值不能通过类方法赋值
- python - 在 Heroku 生产期间如何处理 google 服务帐户 json 文件