在hadoop上使用sql。
我有一个ID列表,其中我试图计算2种不同的客人评论数据点的总数。为了 guest_review_1
我已经把总数退了。为了 guest_review_2
我把总数分成5个区间。
我正在努力的是在的where子句中设置一个过滤器 guest_review_1
我不包括总数小于5的属性。
有解决办法吗?嵌套的select语句?
包括以下查询示例:
Select
id,
count(distinct guest_review_1) as "Guest_Reviews",
count(distinct(case when guest_review_2 < 1 then guest_review_1 end)) as Group1,
Count(distinct(case when guest_review_2 >=2 AND guest_review_2 <3 then guest_review_1 end)) as Group2,
From table_name
Where
guest_review_2 IS NOT NULL
AND guest_review_1 >=5
AND date BETWEEN '2017-01-01' AND '2017-01-31'
Group By id
1条答案
按热度按时间ds97pgxw1#
我不能完全肯定这个词的意思
group_1
以及group_2
示例查询中的聚合。然而,问题的实质似乎是如何基于聚合函数的结果过滤结果集(count
)而不是过滤单个输入行的值。apachehive通过使用sqlHAVING
条款。在下面的示例中,输入关系包含6行
id
设置为1
和4排id
设置为2
. 查询包含子句HAVING guest_reviews >= 5
. 因为HAVING
子句中,结果集只包含id
与1
. 没有带的输出行id
设置为2
.