如何在sql/impala中显示列中的唯一值

x0fgdtte  于 2021-06-26  发布在  Impala
关注(0)|答案(2)|浏览(389)

我有一个高级查询,我想在其中显示列的唯一值“ vq5p1.message ". 我该怎么做?
我的问题:

SELECT th.hashtag_id,
       COUNT(th.hashtag_id) as count_hashtags, vq5p1.message
  FROM tweet_hashtag th
  JOIN tweet t
    ON t.tweet_id = th.tweet_id
  JOIN virtualq5p1 vq5p1
    ON vq5p1.tweet_id = th.tweet_id
  JOIN hashtag_fc fc
    ON fc.hashtag_id = vq5p1.hashtag_id
  JOIN game g
    ON g.fc_id1 = fc.fc_id
    OR g.fc_id2 = fc.fc_id 
  WHERE NOT EXISTS (SELECT 1
                     FROM virtualq5p1 vq5p2
                    WHERE vq5p2.hashtag_id = th.hashtag_id
                      AND vq5p2.tweet_id = th.tweet_id)
   AND t.created_time >= g.official_start
   AND t.created_time <= g.official_end
GROUP BY th.hashtag_id, vq5p1.message
ORDER BY COUNT(th.hashtag_id) DESC
LIMIT 10;

注:vq5p1是一个视图。
现在我只得到不正确的重复结果:
我现在得到的截图

gfttwv5a

gfttwv5a1#

因此,为了获得独特的消息,我创建了以下视图:

SELECT th.hashtag_id,
       COUNT(th.hashtag_id) as count_hashtags, vq5p1.message
  FROM tweet_hashtag th
  JOIN tweet t
    ON t.tweet_id = th.tweet_id
  JOIN virtualq5p1 vq5p1
    ON vq5p1.tweet_id = th.tweet_id
  JOIN hashtag_fc fc
    ON fc.hashtag_id = vq5p1.hashtag_id
  JOIN game g
    ON g.fc_id1 = fc.fc_id
    OR g.fc_id2 = fc.fc_id 
  WHERE NOT EXISTS (SELECT 1
                     FROM virtualq5p1 vq5p3
                    WHERE vq5p3.hashtag_id = th.hashtag_id
                      AND vq5p3.tweet_id = th.tweet_id)
   AND t.created_time >= g.official_start
   AND t.created_time <= g.official_end
GROUP BY th.hashtag_id, vq5p1.message
ORDER BY COUNT(th.hashtag_id) DESC
LIMIT 10;

然后使用视图和原始“message”列所在的表中的结果。

select vq5p2.hashtag_id, vq5p2.count_hashtags, ht.message
from hashtag ht
JOIN virtualq5p2 vq5p2
ON vq5p2.hashtag_id = ht.hashtag_id
qmb5sa22

qmb5sa222#

也许你想要:

SELECT vq5p1.message, COUNT(*) as count_hashtags
. . .
GROUP BY vq5p1.message
ORDER BY COUNT(*) DESC

这将为每条消息返回一行,其中包含分配给它的哈希标记数(我认为)。

相关问题