与Postgres的数据透视表样式价格矩阵

时间:2016-12-20 06:28:13

标签: sql postgresql search pivot crosstab

Airline fare matrix UI

您如何实施像使用Postgres的机票搜索网站上看到的价格矩阵?基本上,我想按类别显示商品的最低价格。这些物品可以是任何物品,但我们假设我们处理的产品具有各种属性,如颜色或大小。

我们的产品表可能如下所示:

id name price color size 1 Test 1 99 blue medium 2 Test 2 89 red small 3 Test 3 109 blue large 4 Test 4 79 blue small

在一个轴上,我们显示颜色,另一个显示尺寸。表中的值将显示该颜色/大小组合的最低价格,因此蓝色和小号交叉处的单元格将为79.

如何实现这一点,看起来很像一个数据透视表?

1 个答案:

答案 0 :(得分:0)

with t(id,name,price,color,size) as (
  values (1,'Test 1',99,'blue','medium')
  ,      (2,'Test 2',89,'red','medium')
  ,      (3,'Test 3',109,'blue','large')
  ,      (4,'Test 4',79,'blue','medium')
  ,      (5,'Test 5',99,'blue','medium')
  ,      (6,'Test 6',69,'blue','small')
  ,      (7,'Test 7',107,'blue','large')
)
select DISTINCT on (color,size) id, color, size, price
from t
  ORDER BY  color,size,price