Не получать уникальные значения, несмотря на использование отдельной функции

avatar
bob
8 августа 2021 в 21:30
32
1
0

Я использую приведенный ниже код для возврата набора различных UUID и соответствующей даты, когда было выполнено первое действие с этими UUID. Необработанные данные будут иметь нечеткие UUID и соответствующую дату, когда было выполнено действие. Я пытаюсь извлечь уникальные UUID и первую дату, когда было предпринято действие, представленное date1. Может кто-нибудь помочь, где я ошибаюсь.

Выход, который я получаю, представляет собой те же необработанные данные, а UUID, к сожалению, не уникальны и имеют много дубликатов

with raw_data as (
select UUID, cast(datestring as timestamp) as date1
from raw)

select
distinct UUID,
date_trunc('week', date1)
from raw_date
Источник

Ответы (1)

avatar
Gordon Linoff
8 августа 2021 в 21:32
0

Использовать функцию агрегирования min():

select UUID,
       min(date_trunc('week', cast(datestring as timestamp))) 
from raw
group by UUID;

Это должно делать все, что делает ваш запрос. Нет необходимости в подзапросе или CTE.

bob
8 августа 2021 в 21:37
0

Спасибо. Должен ли я сделать это в подзапросе? Или это должно быть в основном запросе? Я попытался выполнить основную функцию в основном запросе. Я использовал код, отличный от uuid, min(date_trunc('week',cast(datestromg as timestamp))), но вывод дает мне уникальные UUID, но я получаю только один вывод во втором столбце. В идеале должно быть как минимум 3-4 метки времени, чего я и ожидал.