Otrzymujesz strumieniowe wstawki z możliwymi zduplikowanymi wierszami (obecne unikalne ID + znacznik czasu). W przypadku zapytań interaktywnych, które wykluczają duplikaty, którego wzorca zapytania należy użyć?
Wybierz odpowiedź
Dotknij opcji, aby sprawdzić swoją odpowiedź.
Poprawna odpowiedź: Użyj funkcji okna ROW_NUMBER z PARTITION by unique ID wraz z WHERE row equals 1..
Dlaczego to jest odpowiedź
Prawidłowa odpowiedź to użycie funkcji okna ROWNUMBER z PARTITION by unique ID wraz z WHERE row equals 1. Funkcja ROWNUMBER() przypisuje unikalny, sekwencyjny numer do każdego wiersza w partycji, zaczynając od 1. Partycjonowanie po unikalnym ID (PARTITION BY unique ID) grupuje wiersze z tym samym ID. Następnie, wybierając wiersze, gdzie ROWNUMBER() wynosi 1 (WHERE row equals 1), skutecznie wybieramy tylko jeden, zazwyczaj najwcześniejszy (jeśli nie ma ORDER BY w funkcji okna, kolejność jest niedeterministyczna, ale dla usunięcia duplikatów to wystarczy, jeśli chcemy konkretny wiersz, np. najnowszy, dodajemy ORDER BY timestamp DESC do funkcji okna), wiersz dla każdego unikalnego ID, eliminując duplikaty. Pozostałe opcje są nieprawidłowe: ORDER BY DESK w kolumnie znacznika czasu i LIMIT do 1 zwróciłoby tylko jeden wiersz z całej tabeli, a nie po jednym dla każdego unikalnego ID. GROUP BY w kolumnie unikalnego ID i kolumnie znacznika czasu oraz SUM dla wartości nie usunęłoby duplikatów, ponieważ wiersze z tym samym ID, ale różnym znacznikiem czasu, byłyby traktowane jako unikalne grupy. Funkcja okna LAG z PARTITION by unique ID wraz z WHERE LAG IS NOT NULL służy do porównywania bieżącego wiersza z poprzednim wierszem w partycji, a nie do usuwania duplikatów.
Zdaj egzamin — bez niekończącego się szukania odpowiedzi
Uzyskaj wszystkie zweryfikowane pytania i wyjaśnienia do tego egzaminu w jednym miejscu i zaoszczędź godziny przygotowań. Ponad 1000 certyfikacji · Ponad 20 języków · Zacznij za darmo.
Zdaj egzamin szybciej → Karta nie jest wymagana