Я довольно плохо знаком с SQL и Redshift, но у меня возникает странная проблема. Так что мои данные выглядят так, как показано ниже. Игнорировать id, фактические значения date_time ... Я просто поместил случайную информацию, но в том же формате
id date_time(var char 255)
1 2019-01-11T05:01:59
1 2019-01-11T05:01:59
2 2019-01-11T05:01:59
3 2019-01-11T05:01:59
1 2019-02-11T05:01:59
2 2019-02-11T05:01:59
Я пытаюсь получить количество уникальных идентификаторов в месяц. Я попробовал следующую команду ниже. Учитывая объем данных, я просто попытался сделать демонстрацию первых 10 строк моей таблицы ...
SELECT COUNT(DISTINCT id),
LEFT(date_time,7)
FROM ( SELECT top 10*
FROM myTable.ME )
GROUP BY LEFT(date_time, 7), id
Я ожидаю что-то вроде ниже.
count left
3 2019-01
2 2019-02
Но яВместо этого я становлюсь похожим на то, что ниже
Затем я попробовал приведенную ниже команду, которая кажется правильной.
SELECT COUNT(DISTINCT id),
LEFT(date_time,7)
FROM ( SELECT top 1000000*
FROM myTable.ME )
GROUP BY LEFT(date_time, 7)
Однако, если вы удалите часть DISTINCT, вы получите результаты ниже. Кажется, что он смотрит только на определенный месяц (2019-01), а не на другие месяцы.
Если кто-нибудь может сказать мне, что не так с командами, которые я использую, или может дать мне правильную команду, я буду очень благодарен. Спасибо. РЕДАКТИРОВАТЬ: Может быть, это потому, что, возможно, мои данные не чистые?