仅当另一列的计数大于零时,才从表中选择一列

时间:2018-01-22 14:35:17

标签: sql hive

我目前正在使用hive sql语句。我有以下架构

ID | DESCRIPTION | BRAND | RATING
---------------------------------
1  | one         | A     | 0
---------------------------------
2  | two         | A     | 0
---------------------------------
3  | three       | B     | 0
---------------------------------
4  | four        | B     | 1
---------------------------------
5  | five        | C     | 1
---------------------------------

我想选择不同的品牌,但前提是评级等于零的列评级的计数大于零。我正在搜索的查询应返回上面给出的数据集的以下结果:

A, B
  • 它返回A,因为A至少有一个等级为零。
  • 它返回B,因为B至少有一个等级为零。
  • 它不会返回C,因为C没有一个等级为零。

当我做一个明确的选择时:

SELECT DISTINCT BRAND FROM MY_TABLE ....

我不知道如何访问当前行的品牌,以便我可以在子选择中使用它进行计数,例如:

.... WHERE COUNT(SELECT * FROM MY_TABLE WHERE RATING = 0 AND BRAND = "CURRENT BRAND") > 0

1 个答案:

答案 0 :(得分:1)

您可以使用group by

select brand
from my_table
where rating = 0
group by brand;

或者更简单:

select distinct brand
from my_table
where rating = 0;