Поиск строк по последней дате и времени нескольких значений нескольких столбцов в большом наборе данных - PullRequest
1 голос
/ 05 апреля 2020

У меня есть дата в следующем формате.

enter image description here

Я хочу узнать, были ли последние закуски, съеденные по серийным номерам 123 и 101, вегетарианскими, не вегетерианский или веганский.

Я пытался:

SELECT      serial_number,Name,event_ts_gmt
FROM            TT T1
INNER JOIN
(
    SELECT      serial_number,max(event_ts_gmt) AS MAXDATE
    FROM        TT
    WHERE       Name = "Snacks"
    AND     serial_number
    IN 
    (

"123",
"101"

    )
    GROUP BY        serial_number
) T2

ON      T1.serial_number = T2.serial_number

, но это выдает ошибку FAILED: Столбец SemanticException serial_number Обнаружен в нескольких таблицах / подзапросах.

Kindly совет.

Желаемый результат:

enter image description here ** Это пример, который я сделал, исходные данные имеют более 40 тыс. строк.

1 Ответ

1 голос
/ 05 апреля 2020

Используйте row_number(), чтобы получить самые последние значения:

select tt.*
from (select tt.*,
             row_number() over (partition by serial_number order by event_ts_gmt) as seqnum
      from tt
      where serial_number in (123, 101) and name = 'Snacks'
     ) tt
where seqnum = 1;

Это вернет две строки с самыми последними данными для каждого серийного номера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...