Как показать уникальные значения в столбце в SQL / Impala - PullRequest
0 голосов
/ 04 мая 2018

У меня сложный запрос, в котором я хотел бы показать уникальные значения столбца "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 - это представление.

Сейчас я получаю только дублирующиеся результаты, которые не верны:

Скриншот того, что я получаю сейчас

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Итак, чтобы получить уникальные сообщения, я создал вид следующего:

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
0 голосов
/ 04 мая 2018

Возможно, вы хотите:

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

Это вернет одну строку на сообщение с количеством присвоенных ему хеш-тегов (я думаю).

...