Postgres中的窗口分区与varchar

时间:2016-07-28 19:12:15

标签: sql postgresql

假设我有以下两列(品牌和颜色)值:

brand   color
ford    blue
ford    pink
ford    yellow
chevy   green
chevy   white
chevy   yellow
jeep    blue
jeep    green

我只关心销售粉红色OR蓝色汽车的品牌。 什么类型的窗口功能将允许我只撤回三个'福特'记录,因为福特有一个粉红色/蓝色的车。两辆吉普车记录。 (我不想看到任何雪佛兰记录)。 感谢

2 个答案:

答案 0 :(得分:1)

您应该使用颜色条件对品牌列进行独特查询。您将获得可用于查询的品牌列表。然后将此结果与基于品牌的普通表相结合。然后得到记录。

换句话说,您需要一个具有不同品牌的子查询以及与您的普通表格相连的内部条件

类似

select t1.* 
from t1 
inner join (
  select distinct brand
  from t1 
  where color in ('pink', 'blue') 
  ) as t2 on t2.brand = t1.brand

答案 1 :(得分:0)

SELECT *
FROM t1
WHERE brand in (
                 SELECT brand
                 FROM t1
                 WHERE color in ('pink', 'blue') 
               )

用英语阅读此查询:从表中选择所有记录,其中品牌等于所有品牌的粉红色或蓝色。