Funkcje agregujące w EXCEL oraz w SQL z pustymi /niewypełnionymi (w bazie NULL) polami poradziły sobie dobrze. Szczególnie jest to widoczne na obliczeniach średniej w poprzednim przykładzie.
Marcinie, jednak nie zawsze jest tak różowo. Przykład pokazujący
różne działanie EXCEL i SQL:
- tabela CENY, pola ID, OPIS_TOWARU, CENA_NETTO, PODATEK
- tabela zasilona 5 rekordami,
- towary Piesek oraz Komer (co to jest, to wyjaśni się na końcu) nie mają wypełnionej wartości w polu PODATEK.
Twoim zadaniem Marcinie jest policzenia dla każdego towaru ceny
brutto. Rozwiązanie jest w EXCEL bardzo proste: cenę netto należy pomnożyć
przez (1 + PODATEK/100). Konieczność dzielenia przez 100 wynika z faktu, iż
zgromadzona informacja nie jest wyrażona w procentach. EXCEL wartości puste/niewypełnione/NULL
potraktował jako zero i wyliczenia są prawidłowe, nie ma niespodzianki. EXCEL
nieco za nas pomyślał.
Jeżeli tabela oraz rekordy są w bazie, to już to samo
zadanie wykonane przy pomocy SQL wymaga ostrożności, brak użycia NVL dla pola
PODATEK generuje inne wartości niż to zrobił EXCEL. Wszystko dokładnie jest
pokazane Marcinie na obrazku.
Przykład jest nieco naciągany, dobrze zaprojektowane tabele
nie powinny zawierać wartości NULL, jeżeli wyraźnie ich charakter wskazuje na
konieczność podania konkretnej wartości i tak generalnie jest. Jednak nie ma co
ukrywać, iż najczęściej to sami analitycy tworząc własne tabele lub w
szczególności łącząc zewnętrznie dane z różnych tabel wytwarzają takie pola z
wartościami NULL.
Działanie bazy możesz przećwiczyć używając skryptu udostępnionego pod linkiem:
Siłą rzeczy musisz mieć bazę zainstalowaną i narzędzie (Klienta) do komunikowania się z nią. Ja mam i da się to zrobić samemu na domowym komputerze. ORACLE udostępnia wersję prawie w pełni funkcjonalną, a na pewno wystarczajacą w celach szkoleniowych. O tym też będzie :-)
Marcinie, i tak zagaiłem o łączeniu tabel, zdradzę iż
następna notatka będzie właśnie o tym. Dzisiejszy wieczór
poświęciłem na wymyślenie przykładu. W środę będę go testował, jak przejdzie
weryfikację wówczas opublikuję.
Brak komentarzy:
Prześlij komentarz