获取少于某些不同值的字段

时间:2014-03-20 05:29:50

标签: sql hive

如果我有两列功能和feature_value的数据,就像下面的示例数据集

feature   feature_value
  X           1
  X           1
  X           2
  Y           7
  Y           8
  Y           9
  Z           100

我希望只获得功能少于3个不同值的功能的feature_value列(在这种情况下只有具有X和Z的列),这样做的有效方法是什么?使用Count(Distinct)并应用where条件还是有更快的方法?

1 个答案:

答案 0 :(得分:0)

请注意,此答案使用通用SQL,因为您的问题并不清楚为什么您只能获得&#34; X&#34;和&#34; Y&#34;记录当你想要那些出现在3或更低的那些时,我也可以自由地理解你的答案意味着你只需要查看featurefeature中出现的次数少于3次{1}}列,根据您的问题说明您正在寻找&#34;列[sic]以获取少于3个不同值的要素。&#34;如果您的意思是 3或更多,则可以通过将<更改为>=来轻松调整以下子查询中的内容。

查询GROUP BY feature并获取计数,然后只选择那些记录。

SELECT * FROM my WHERE feature IN
(SELECT feature
FROM my
GROUP BY feature
HAVING COUNT(*) < 3)
;

http://sqlfiddle.com/#!2/29c05/1