&&
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
NULL
wartość. - Możesz dołączyć do danych, m.in.
NULL
wartość, używając operatoraIS NOT DISTINCT FROM
, który uwzględniaNULL
. - Teraz pobrałeś odpowiedni
id
wartości, które mogą być użyte wWHERE
filtruj - Wreszcie możesz zrobić swoją agregację