&& operator nie obsługuje NULL wartości. Potrzebujesz więc innego podejścia. Na przykład możesz najpierw dołączyć dane do tabeli. To daje ci id s, które są powiązane z Twoimi wymaganymi danymi. W drugim kroku możesz agregować wszystkie wartości za pomocą tych id s.
demonstracja krok po kroku:db<>skrzypce
SELECT
id,
ARRAY_AGG(session_os) -- 4
FROM t
WHERE id IN ( -- 3
SELECT
id
FROM
t
JOIN (
SELECT unnest(ARRAY[1, null]) as a -- 1
)s ON s.a IS NOT DISTINCT FROM t.session_os -- 2
)
GROUP BY id
- Utwórz tabelę lub wynik zapytania zawierający odpowiednie dane, w tym
NULLwartość. - Możesz dołączyć do danych, m.in.
NULLwartość, używając operatoraIS NOT DISTINCT FROM, który uwzględniaNULL. - Teraz pobrałeś odpowiedni
idwartości, które mogą być użyte wWHEREfiltruj - Wreszcie możesz zrobić swoją agregację