Liczenie NULLi bez użycia WHERE

0

Mam przykładową tabelę z ID, IMIĘ, NAZWISKO, ADRES.
Pytanie brzmi, jak policzyć ile osób z tej tabeli ma NULLa w kolumnie ADRES nie używając klauzuli WHERE? Bo z WHERE jest to oczywiste.

SELECT COUNT(*)
FROM TABELKA
WHERE ADRES IS NULL
0

Aby policzyć w jednym przebiegu różne wartości, można to zrobić tak

 
SELECT 
    sum( case when pole is null then 1 end) ile_nulli,
    sum( case when pole is not null then 1 end) ile_bez_nulli,
    sum( case when pole = 'Franek' then 1 end) ile_frankow,
    sum( case when pole = 'Piotrek' then 1 end) ile_piotrkow,
    sum( case when pensja > 10000 and dni_nieobecnosci > 60 then 1 end) ile_do_zwolnienia
FROM tabela
0

A czy inner join złączy nam rekordy jeśli klucz łączenia będzie nullem? Jeśli nie to możesz wykorzystać ten fakt :)

0

@Hostel, bo znalazłem takie zadanie w starych kolokwiach, a sam niedługo mam i to jest właśnie jedna z rzeczy których nie wiedziałem ;-)

Z INNER JOINami spróbuje ;-)

2

Na MS SQL-u można to zrobić tak:

SELECT Count(*)-Count('' + Adres) FROM Tabelka

Wykorzystuję tu fakt, że COKOLWIEK + NULL = NULL, a te w Count są pomijane. Czyli Count('' + Adres) zwróci mi liczbę "nie-Nulli". Wystarczy ją odjąć od całości...

0

wystarczy

SELECT COUNT(*) - COUNT(jakas kolumna) from TABEL

COUNT(*) zlicza wszystkie rekordy (nulle tez)

COUNT(kolumna) liczy nienullowe wystapienia kolumny

1 użytkowników online, w tym zalogowanych: 0, gości: 1