Liczenie NULLi bez użycia WHERE

Liczenie NULLi bez użycia WHERE
  • Rejestracja: dni
  • Ostatnio: dni
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.

Kopiuj
SELECT COUNT(*)
FROM TABELKA
WHERE ADRES IS NULL
KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

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

Kopiuj
 
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
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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 :)

  • Rejestracja: dni
  • Ostatnio: dni
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 ;-)

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
2

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

Kopiuj
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...

crowa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 295
0

wystarczy

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

COUNT(*) zlicza wszystkie rekordy (nulle tez)

COUNT(kolumna) liczy nienullowe wystapienia kolumny

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.