Szczegóły ebooka

SQL. Zapytania i techniki dla bazodanowców. Receptury. Wydanie II

SQL. Zapytania i techniki dla bazodanowców. Receptury. Wydanie II

Anthony Molinaro, Robert de Graaf

Ebook

SQL jest linqua franca dla profesjonalistów zajmujących się przetwarzaniem danych. To wyjątkowo dojrzałe narzędzie, z którego korzysta już kilka pokoleń inżynierów i programistów. Wydaje się jednak, że zbyt często ten język nie jest należycie wykorzystywany: wielu użytkowników posługuje się nim na co dzień, ale mało kto wychodzi poza stosunkowo proste zapytania. Tymczasem z możliwości nowoczesnego SQL mogą skorzystać nie tylko osoby zajmujące się bazami danych, ale także analitycy danych, analitycy biznesowi, statystycy czy osoby zajmujące się wizualizacją danych.

To drugie, gruntownie zaktualizowane wydanie nieocenionego zbioru receptur, podanych tak, aby maksymalnie ułatwić rozwiązywanie codziennych problemów związanych z budową zapytań SQL. Uwzględniono tu kilka wariantów języka SQL, zaimplementowanych w systemach Oracle, DB2, SQL Server, MySQL i PostgreSQL. W książce znalazły się propozycje zastosowania takich nowoczesnych rozwiązań jak funkcje okna, wspólne wyrażenia tablicowe i rekurencyjne zapytania hierarchiczne. Nie zabrakło receptur opracowanych specjalnie dla analityków danych, umożliwiających zastosowanie mediany odchylenia bezwzględnego i prawa Benforda, a także wyszukiwanie danych tekstowych na podstawie brzmienia słów.

W tym wydaniu znajdziesz receptury, dzięki którym:

  • łatwiej opanujesz podstawy SQL
  • dobrze wykorzystasz funkcje okna
  • zastosujesz wspólne wyrażenia tablicowe (CTE) do tworzenia czytelniejszych rozwiązań
  • zwiększysz użyteczność SQL w analizie danych
  • skuteczniej obsłużysz dane liczbowe i ciągi znaków

SQL: dokładnie to, czego potrzebujesz!

  • Przedmowa
    • Dla kogo jest przeznaczona ta książka?
    • O czym w tej książce nie pisaliśmy?
    • Systemy i wersje
    • Tabele wykorzystane w tej książce
    • Konwencje stosowane w książce
      • Konwencje typograficzne
      • Konwencje prezentacji kodów
    • Podziękowania do wydania drugiego
    • Podziękowania do wydania pierwszego
  • Rozdział 1. Odczytywanie rekordów
    • 1.1. Odczytywanie wszystkich wierszy i kolumn tabeli
      • Problem
      • Rozwiązanie
      • Omówienie
    • 1.2. Odczytywanie podzbioru wierszy tabeli
      • Problem
      • Rozwiązanie
      • Omówienie
    • 1.3. Odnajdywanie wierszy spełniających wiele warunków
      • Problem
      • Rozwiązanie
      • Omówienie
    • 1.4. Odczytywanie podzbioru kolumn tabeli
      • Problem
      • Rozwiązanie
      • Omówienie
    • 1.5. Definiowanie sensownych nazw kolumn
      • Problem
      • Rozwiązanie
      • Omówienie
    • 1.6. Odwołania do aliasów kolumn w klauzuli WHERE
      • Problem
      • Rozwiązanie
      • Omówienie
    • 1.7. Konkatenacja wartości kolumn
      • Problem
      • Rozwiązanie
        • DB2, Oracle, PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
    • 1.8. Stosowanie logiki warunkowej w wyrażeniu SELECT
      • Problem
      • Rozwiązanie
      • Omówienie
    • 1.9. Ograniczanie liczby zwracanych wierszy
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL i PostgreSQL
        • Oracle
        • SQL Server
      • Omówienie
    • 1.10. Zwracanie n losowych rekordów tabeli
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • PostgreSQL
        • Oracle
        • SQL Server
      • Omówienie
    • 1.11. Odnajdywanie wartości pustych (NULL)
      • Problem
      • Rozwiązanie
      • Omówienie
    • 1.12. Przekształcanie wartości pustych w rzeczywiste
      • Problem
      • Rozwiązanie
      • Omówienie
    • 1.13. Poszukiwanie wzorców
      • Problem
      • Rozwiązanie
      • Omówienie
    • 1.14. Podsumowanie
  • Rozdział 2. Sortowanie wyników zapytań
    • 2.1. Zwracanie wyników zapytań posortowanych w określonym porządku
      • Problem
      • Rozwiązanie
      • Omówienie
    • 2.2. Sortowanie zbioru wynikowego według zawartości wielu pól
      • Problem
      • Rozwiązanie
      • Omówienie
    • 2.3. Sortowanie według podłańcuchów
      • Problem
      • Rozwiązanie
        • DB2, MySQL, Oracle i PostgreSQL
        • SQL Server
      • Omówienie
    • 2.4. Sortowanie wymieszanych danych alfanumerycznych
      • Problem
      • Rozwiązanie
        • Oracle, SQL Server i PostgreSQL
        • DB2
        • MySQL
      • Omówienie
    • 2.5. Obsługa wartości pustych w zapytaniach sortujących
      • Problem
      • Rozwiązanie
        • DB2, MySQL, PostgreSQL oraz SQL Server
        • Oracle
      • Omówienie
    • 2.6. Sortowanie według klucza zależnego od danych
      • Problem
      • Rozwiązanie
      • Omówienie
    • 2.7. Podsumowanie
  • Rozdział 3. Praca z wieloma tabelami
    • 3.1. Umieszczanie jednego zbioru wierszy ponad drugim
      • Problem
      • Rozwiązanie
      • Omówienie
    • 3.2. Łączenie wzajemnie powiązanych wierszy
      • Problem
      • Rozwiązanie
      • Omówienie
    • 3.3. Odnajdywanie wspólnych wierszy pomiędzy dwiema tabelami
      • Problem
      • Rozwiązanie
        • MySQL i SQL Server
        • DB2, Oracle i PostgreSQL
      • Omówienie
    • 3.4. Uzyskiwanie z jednej tabeli tylko tych wartości, które nie występują w innej tabeli
      • Problem
      • Rozwiązanie
        • DB2, PostgreSQL i SQL Server
        • Oracle
        • MySQL
      • Omówienie
        • DB2, PostgreSQL i SQL Server
        • Oracle
        • MySQL
    • 3.5. Uzyskiwanie z jednej tabeli tylko tych wierszy, dla których nie istnieją odpowiedniki w innej tabeli
      • Problem
      • Rozwiązanie
        • DB2, MySQL, PostgreSQL, Oracle, SQL Server
      • Omówienie
    • 3.6. Dodawanie złączeń do zapytań bez konieczności modyfikowania pozostałych, już istniejących złączeń
      • Problem
      • Rozwiązanie
      • Omówienie
      • Patrz także
    • 3.7. Określanie, czy dwie tabele zawierają te same dane
      • Problem
      • Rozwiązanie
        • DB2 i PostgreSQL
        • Oracle
        • MySQL i SQL Server
      • Omówienie
        • DB2, Oracle i PostgreSQL
        • MySQL i SQL Server
    • 3.8. Identyfikowanie i eliminowanie iloczynów kartezjańskich
      • Problem
      • Rozwiązanie
      • Omówienie
    • 3.9. Stosowanie złączeń w zapytaniach wykorzystujących funkcje agregujące
      • Problem
      • Rozwiązanie
        • MySQL i PostgreSQL
        • DB2, Oracle i SQL Server
      • Omówienie
        • MySQL i PostgreSQL
        • DB2, Oracle i SQL Server
    • 3.10. Stosowanie złączeń zewnętrznych w zapytaniach wykorzystujących funkcje agregujące
      • Problem
      • Rozwiązanie
        • DB2, MySQL, PostgreSQL i SQL Server
      • Omówienie
    • 3.11. Zwracanie brakujących danych z wielu tabel
      • Problem
      • Rozwiązanie
        • DB2, MySQL, PostgreSQL i SQL Server
        • Oracle
      • Omówienie
    • 3.12. Wykorzystywanie wartości NULL w operacjach i porównaniach
      • Problem
      • Rozwiązanie
      • Omówienie
    • 3.13. Podsumowanie
  • Rozdział 4. Wstawianie, aktualizowanie i usuwanie
    • 4.1. Wstawianie nowych rekordów
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.2. Wstawianie wartości domyślnych
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.3. Zastępowanie wartości domyślnych wartością NULL
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.4. Kopiowanie wierszy pomiędzy tabelami
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.5. Kopiowanie definicji tabel
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle, MySQL i PostgreSQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle, MySQL i PostgreSQL
        • SQL Server
    • 4.6. Wstawianie wierszy do wielu tabel jednocześnie
      • Problem
      • Rozwiązanie
        • Oracle
        • DB2
        • MySQL, PostgreSQL oraz SQL Server
      • Omówienie
        • Oracle
        • DB2
        • MySQL, PostgreSQL oraz SQL Server
    • 4.7. Blokowanie możliwości wstawiania wartości do wybranych kolumn
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.8. Modyfikowanie rekordów tabeli
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.9. Aktualizowanie danych pod warunkiem istnienia w tabeli określonych wierszy
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.10. Aktualizowanie wartości według zawartości innej tabeli
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle
        • PostgreSQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle
        • PostgreSQL, SQL Server i MySQL
    • 4.11. Scalanie rekordów
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.12. Usuwanie wszystkich rekordów z tabeli
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.13. Usuwanie rekordów spełniających określone kryteria
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.14. Usuwanie pojedynczych rekordów
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.15. Usuwanie wierszy naruszających integralność referencyjną
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.16. Usuwanie powtarzających się rekordów
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.17. Usuwanie rekordów na podstawie danych z innej tabeli
      • Problem
      • Rozwiązanie
      • Omówienie
    • 4.18. Podsumowanie
  • Rozdział 5. Zapytania przetwarzające metadane
    • 5.1. Generowanie listy tabel wchodzących w skład schematu bazy danych
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL, MySQL i SQL Server
      • Omówienie
    • 5.2. Generowanie listy kolumn danej tabeli
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL, MySQL i SQL Server
      • Omówienie
    • 5.3. Generowanie listy indeksowanych kolumn danej tabeli
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
    • 5.4. Generowanie listy ograniczeń zdefiniowanych dla tabeli
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL, MySQL i SQL Server
      • Omówienie
    • 5.5. Generowanie listy kluczy obcych pozbawionych indeksów
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
    • 5.6. Generowanie kodu języka SQL za pomocą wyrażeń tego języka
      • Problem
      • Rozwiązanie
      • Omówienie
    • 5.7. Opisywanie widoków słownika danych w bazie danych Oracle
      • Problem
      • Rozwiązanie
      • Omówienie
    • 5.8. Podsumowanie
  • Rozdział 6. Praca z łańcuchami
    • 6.1. Przechodzenie pomiędzy znakami łańcucha
      • Problem
      • Rozwiązanie
      • Omówienie
    • 6.2. Umieszczanie apostrofów w stałych łańcuchowych
      • Problem
      • Rozwiązanie
      • Omówienie
    • 6.3. Zliczanie wystąpień znaku w łańcuchu wejściowym
      • Problem
      • Rozwiązanie
      • Omówienie
    • 6.4. Usuwanie z łańcucha niechcianych znaków
      • Problem
      • Rozwiązanie
        • DB2, Oracle, PostgreSQL i SQL Server
        • MySQL
      • Omówienie
    • 6.5. Oddzielanie danych numerycznych od danych znakowych
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • SQL Server
      • Omówienie
    • 6.6. Określanie, czy łańcuch jest ciągiem alfanumerycznym
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle i PostgreSQL
        • SQL Server
      • Omówienie
        • DB2, Oracle, PostgreSQL i SQL Server
        • MySQL
    • 6.7. Określanie inicjałów na podstawie całych imion i nazwisk
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle i PostgreSQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle i PostgreSQL
        • MySQL
    • 6.8. Sortowanie kolumn według wybranych fragmentów łańcuchów
      • Problem
      • Rozwiązanie
        • DB2, Oracle, MySQL i PostgreSQL
        • SQL Server
      • Omówienie
    • 6.9. Sortowanie danych według liczb zapisanych w łańcuchach
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
      • Omówienie
    • 6.10. Tworzenie listy wartości oddzielonych przecinkami z danych zawartych w wierszach tabeli
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle
        • PostgreSQL i SQL Server
      • Omówienie
        • MySQL
        • PostgreSQL i SQL Server
        • Oracle
    • 6.11. Konwertowanie danych oddzielonych przecinkami na wielowartościową listę IN
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle
        • PostgreSQL
        • SQL Server
      • Omówienie
        • DB2 i SQL Server
        • MySQL
        • Oracle
        • PostgreSQL
    • 6.12. Sortowanie znaków w łańcuchach w porządku alfabetycznym
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle
        • PostgreSQL
        • SQL Server
      • Omówienie
        • SQL Server
        • MySQL
        • Oracle
        • PostgreSQL i DB2
    • 6.13. Identyfikowanie łańcuchów, które można traktować jak liczby
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle
        • PostgreSQL
        • SQL Server
      • Omówienie
        • DB2, Oracle i PostgreSQL
        • MySQL
    • 6.14. Odnajdywanie n-tego podłańcucha na liście oddzielonej przecinkami
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle
        • PostgreSQL
        • SQL Server
      • Omówienie
        • DB2
        • MySQL
        • SQL Server
        • Oracle
        • PostgreSQL
    • 6.15. Przetwarzanie adresów IP
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle
        • PostgreSQL
        • SQL Server
      • Omówienie
    • 6.16. Porównywanie łańcuchów znaków na podstawie brzmienia
      • Problem
      • Rozwiązanie
      • Omówienie
    • 6.17. Wyszukiwanie tekstu niepasującego do wzorca
      • Problem
      • Rozwiązanie
      • Omówienie
    • 6.18. Podsumowanie
  • Rozdział 7. Praca z liczbami
    • 7.1. Wyznaczanie wartości średniej
      • Problem
      • Rozwiązanie
      • Omówienie
      • Patrz także
    • 7.2. Identyfikacja minimalnej i maksymalnej wartości w kolumnie
      • Problem
      • Rozwiązanie
      • Omówienie
      • Patrz także
    • 7.3. Sumowanie wartości składowanych w kolumnie
      • Problem
      • Rozwiązanie
      • Omówienie
      • Patrz także
    • 7.4. Zliczanie wierszy tabeli
      • Problem
      • Rozwiązanie
      • Omówienie
      • Patrz także
    • 7.5. Zliczanie różnych wartości w kolumnie
      • Problem
      • Rozwiązanie
      • Omówienie
    • 7.6. Generowanie sum bieżących
      • Problem
      • Rozwiązanie
      • Omówienie
    • 7.7. Generowanie iloczynów bieżących
      • Problem
      • Rozwiązanie
      • Omówienie
    • 7.8. Wygładzanie serii wartości
      • Problem
      • Rozwiązanie
      • Omówienie
    • 7.9. Wyznaczanie wartości modalnej (dominanty)
      • Problem
      • Rozwiązanie
        • DB2, MySQL, PostgreSQL i SQL Server
        • Oracle
      • Omówienie
        • DB2, MySQL, PostgreSQL i SQL Server
        • Oracle
      • Patrz także
    • 7.10. Wyznaczanie mediany
      • Problem
      • Rozwiązanie
        • DB2 i PostgreSQL
        • SQL Server
        • MySQL
        • Oracle
      • Omówienie
        • Oracle, PostgreSQL, SQL Server i DB2
        • MySQL
    • 7.11. Określanie procentowego udziału w wartości łącznej
      • Problem
      • Rozwiązanie
        • MySQL i PostgreSQL
        • DB2, Oracle i SQL Server
      • Omówienie
        • MySQL i PostgreSQL
        • DB2, Oracle i SQL Server
    • 7.12. Agregowanie kolumn zawierających wartości NULL
      • Problem
      • Rozwiązanie
      • Omówienie
    • 7.13. Wyznaczanie wartości średnich z wyłączeniem wartości spoza określonego przedziału
      • Problem
      • Rozwiązanie
        • MySQL i PostgreSQL
        • DB2, Oracle i SQL Server
      • Omówienie
        • MySQL i PostgreSQL
        • DB2, Oracle i SQL Server
    • 7.14. Wyodrębnianie liczb z łańcuchów alfanumerycznych
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle, SQL Server i PostgreSQL
        • MySQL
      • Omówienie
    • 7.15. Modyfikowanie wartości uwzględnianych w sumach bieżących
      • Problem
      • Rozwiązanie
      • Omówienie
    • 7.16. Znajdowanie wartości odstających metodą mediany odchylenia bezwzględnego
      • Problem
      • Rozwiązanie
        • SQL Server
        • PostgreSQL i DB2
        • Oracle
        • MySQL
      • Omówienie
    • 7.17. Wyszukiwanie anomalii przy użyciu prawa Benforda
      • Problem
      • Rozwiązanie
      • Omówienie
    • 7.18. Podsumowanie
  • Rozdział 8. Działania na datach
    • 8.1. Dodawanie i odejmowanie dni, miesięcy i lat
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
    • 8.2. Określanie liczby dni pomiędzy dwiema datami
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle i PostgreSQL
        • MySQL i SQL Server
      • Omówienie
    • 8.3. Określanie liczby dni roboczych pomiędzy dwiema datami
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle
        • PostgreSQL
        • SQL Server
      • Omówienie
    • 8.4. Określanie liczby miesięcy lub lat dzielących dwie daty
      • Problem
      • Rozwiązanie
        • DB2 i MySQL
        • Oracle
        • PostgreSQL
        • SQL Server
      • Omówienie
        • DB2, MySQL i PostgreSQL
        • Oracle i SQL Server
    • 8.5. Określanie liczby sekund, minut lub godzin dzielących dwie daty
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • SQL Server
        • Oracle i PostgreSQL
      • Omówienie
    • 8.6. Zliczanie wystąpień poszczególnych dni tygodnia w roku
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL
        • Oracle
        • PostgreSQL
        • SQL Server
      • Omówienie
        • DB2
        • MySQL
        • Oracle
        • PostgreSQL
        • SQL Server
    • 8.7. Określanie różnicy dat między rekordem bieżącym a następnym
      • Problem
      • Rozwiązanie
        • DB2
        • MySQL i SQL Server
        • Oracle
        • PostgreSQL
      • Omówienie
    • 8.8. Podsumowanie
  • Rozdział 9. Przetwarzanie dat
    • 9.1. Określanie, czy dany rok jest rokiem przestępnym
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
    • 9.2. Określanie liczby dni w roku
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
    • 9.3. Wyodrębnianie jednostek czasu z dat wejściowych
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
    • 9.4. Określanie pierwszego i ostatniego dnia miesiąca
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
    • 9.5. Określanie wszystkich dat występowania konkretnego dnia tygodnia w ciągu danego roku
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
    • 9.6. Określanie dat pierwszego i ostatniego wystąpienia określonego dnia tygodnia w danym miesiącu
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
        • DB2 i SQL Server
        • Oracle
        • PostgreSQL i MySQL
    • 9.7. Tworzenie kalendarza
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle
        • MySQL, PostgreSQL i SQL Server
    • 9.8. Generowanie dat rozpoczynających i kończących poszczególne kwartały danego roku
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle
        • PostgreSQL, MySQL i SQL Server
    • 9.9. Określanie daty początkowej i końcowej dla danego kwartału
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
    • 9.10. Uzupełnianie brakujących dat
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
        • DB2
        • Oracle
        • PostgreSQL
        • MySQL
        • SQL Server
    • 9.11. Przeszukiwanie według określonych jednostek czasu
      • Problem
      • Rozwiązanie
        • DB2 i MySQL
        • Oracle i PostgreSQL
        • SQL Server
      • Omówienie
    • 9.12. Porównywanie rekordów według określonych fragmentów dat
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle i PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
    • 9.13. Identyfikacja wzajemnie pokrywających się przedziałów czasowych
      • Problem
      • Rozwiązanie
        • DB2, PostgreSQL i Oracle
        • MySQL
        • SQL Server
      • Omówienie
    • 9.14. Podsumowanie
  • Rozdział 10. Praca z przedziałami
    • 10.1. Lokalizowanie przedziałów w ramach ciągów wartości
      • Problem
      • Rozwiązanie
      • Omówienie
        • DB2, MySQL, PostgreSQL, SQL Server i Oracle
    • 10.2. Odnajdywanie różnic pomiędzy wierszami należącymi do tej samej grupy lub partycji danych
      • Problem
      • Rozwiązanie
      • Omówienie
    • 10.3. Lokalizowanie początków i końców przedziałów wartości następujących bezpośrednio po sobie
      • Problem
      • Rozwiązanie
      • Omówienie
    • 10.4. Uzupełnianie brakujących wartości w przedziale
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • PostgreSQL i MySQL
        • SQL Server
      • Omówienie
    • 10.5. Generowanie kolejnych wartości liczbowych
      • Problem
      • Rozwiązanie
        • DB2 i SQL Server
        • Oracle
        • PostgreSQL
      • Omówienie
        • DB2 i SQL Server
        • Oracle
        • PostgreSQL
    • 10.6. Podsumowanie
  • Rozdział 11. Zaawansowane przeszukiwanie
    • 11.1. Podział zbioru wynikowego na strony
      • Problem
      • Rozwiązanie
      • Omówienie
    • 11.2. Pomijanie n wierszy tabeli
      • Problem
      • Rozwiązanie
      • Omówienie
    • 11.3. Stosowanie logiki alternatywy w zapytaniach wykorzystujących złączenia zewnętrzne
      • Problem
      • Rozwiązanie
      • Omówienie
        • DB2, MySQL, PostgreSQL i SQL Server
    • 11.4. Identyfikacja par odwrotnych w przetwarzanym zbiorze wierszy
      • Problem
      • Rozwiązanie
      • Omówienie
    • 11.5. Wybieranie n pierwszych rekordów
      • Problem
      • Rozwiązanie
      • Omówienie
    • 11.6. Odnajdywanie rekordów z największymi i najmniejszymi wartościami
      • Problem
      • Rozwiązanie
        • DB2, Oracle i SQL Server
      • Omówienie
        • DB2, Oracle i SQL Server
    • 11.7. Badanie przyszłych wierszy
      • Problem
      • Rozwiązanie
      • Omówienie
      • Patrz także
    • 11.8. Przenoszenie wartości wierszy
      • Problem
      • Rozwiązanie
      • Omówienie
    • 11.9. Tworzenie rankingu rezultatów
      • Problem
      • Rozwiązanie
      • Omówienie
    • 11.10. Eliminowanie powtórzeń
      • Problem
      • Rozwiązanie
        • Klasyczne rozwiązania
      • Omówienie
        • Klasyczne rozwiązania
    • 11.11. Odnajdywanie wartości skoczka
      • Problem
      • Rozwiązanie
        • DB2 i SQL Server
        • Oracle
      • Omówienie
        • DB2 i SQL Server
        • Oracle
    • 11.12. Generowanie prostych prognoz
      • Problem
      • Rozwiązanie
        • DB2, MySQL i SQL Server
        • Oracle
        • PostgreSQL
      • Omówienie
        • DB2, MySQL i SQL Server
        • Oracle
        • PostgreSQL
    • 11.13. Podsumowanie
  • Rozdział 12. Raportowanie i przekształcanie danych
    • 12.1. Konwertowanie zbioru wynikowego do postaci pojedynczego wiersza
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.2. Konwertowanie zbioru wynikowego do postaci zbioru wielowierszowego
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.3. Odwrotna transpozycja zbioru wynikowego
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.4. Odwrotna transpozycja zbioru danych do postaci zbioru jednokolumnowego
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.5. Eliminowanie powtórzeń ze zbioru wynikowego
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.6. Przekształcanie zbioru wynikowego w celu ułatwienia obliczeń na wierszach
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.7. Tworzenie bloków danych tej samej wielkości
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.8. Tworzenie predefiniowanej liczby bloków danych
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.9. Tworzenie histogramów poziomych
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle, PostgreSQL i MySQL
        • SQL Server
      • Omówienie
    • 12.10. Tworzenie histogramów pionowych
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.11. Zwracanie zbiorów wynikowych bez kolumn wykorzystywanych w procesie grupowania
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.12. Wyznaczanie prostych sum częściowych
      • Problem
      • Rozwiązanie
        • DB2 i Oracle
        • SQL Server i MySQL
        • PostgreSQL
      • Omówienie
        • DB2 i Oracle
        • SQL Server i MySQL
        • PostgreSQL
    • 12.13. Wyznaczanie sum częściowych dla wszystkich możliwych kombinacji wyrażeń
      • Problem
      • Rozwiązanie
        • DB2
        • Oracle
        • SQL Server
        • PostgreSQL
        • MySQL
      • Omówienie
        • Oracle, DB2 i SQL Server
        • MySQL
    • 12.14. Identyfikowanie wierszy niebędących sumami częściowymi
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.15. Konwertowanie wierszy na wersję bitową za pomocą wyrażeń CASE
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.16. Tworzenie tzw. macierzy rzadkich
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.17. Grupowanie wierszy według określonych jednostek czasu
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.18. Jednoczesne agregowanie danych według różnych grup i bloków
      • Problem
      • Rozwiązanie
      • Omówienie
    • 12.19. Agregowanie zmiennych (ruchomych) przedziałów wartości
      • Problem
      • Rozwiązanie
        • DB2 i Oracle
        • MySQL
        • PostgreSQL i SQL Server
      • Omówienie
        • DB2, MySQL i Oracle
        • PostgreSQL i SQL Server
    • 12.20. Obracanie zbioru wynikowego zawierającego sumy częściowe
      • Problem
      • Rozwiązanie
        • DB2 i Oracle
        • SQL Server
        • PostgreSQL
        • MySQL
      • Omówienie
    • 12.21. Podsumowanie
  • Rozdział 13. Zapytania hierarchiczne
    • 13.1. Wyrażanie relacji rodzic potomek
      • Problem
      • Rozwiązanie
        • DB2, Oracle i PostgreSQL
        • MySQL
        • SQL Server
      • Omówienie
    • 13.2. Wyrażanie relacji potomek rodzic dziadek
      • Problem
      • Rozwiązanie
        • DB2, PostgreSQL i SQL Server
        • MySQL
        • Oracle
      • Omówienie
        • Oracle
    • 13.3. Tworzenie hierarchicznego widoku tabeli
      • Problem
      • Rozwiązanie
        • DB2, PostgreSQL i SQL Server
        • MySQL
        • Oracle
      • Omówienie
        • DB2, MySQL, PostgreSQL i SQL Server
        • Oracle
    • 13.4. Odnajdywanie wszystkich wierszy potomnych dla danego wiersza rodzica
      • Problem
      • Rozwiązanie
        • DB2, PostgreSQL i SQL Server
        • Oracle
      • Omówienie
        • DB2, MySQL, PostgreSQL i SQL Server
        • Oracle
    • 13.5. Określanie wierszy występujących w rolach liści, gałęzi i korzeni
      • Problem
      • Rozwiązanie
        • DB2, PostgreSQL, MySQL i SQL Server
        • Oracle
      • Omówienie
        • DB2, PostgreSQL, MySQL i SQL Server
        • Oracle
    • 13.6. Podsumowanie
  • Rozdział 14. Rozmaitości
    • 14.1. Tworzenie raportów krzyżowych za pomocą operatora PIVOT systemu SQL Server
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.2. Odtwarzanie układu raportów krzyżowych za pomocą operatora UNPIVOT systemu SQL Server
      • Problem
      • Rozwiązanie
    • 14.3. Transponowanie zbiorów wynikowych za pomocą klauzuli MODEL systemu Oracle
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.4. Wyodrębnianie z łańcucha elementów o nieustalonym położeniu
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.5. Znajdowanie liczby dni w roku (rozwiązanie alternatywne tylko dla systemu Oracle)
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.6. Przeszukiwanie danych wejściowych pod kątem zawierania łańcuchów alfanumerycznych
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.7. Konwertowanie liczb całkowitych na system dwójkowy w systemie Oracle
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.8. Obracanie zbioru wynikowego z wartościami rankingowymi
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.9. Wstawianie nagłówków kolumn w dwukrotnie obróconych zbiorach wynikowych
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.10. Konwertowanie podzapytań skalarnych na podzapytania złożone w systemie Oracle
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.11. Przenoszenie uszeregowanych danych do osobnych wierszy
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.12. Wyznaczanie procentowych stosunków poszczególnych wartości względem sumy wszystkich wartości
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.13. Testowanie występowania wartości w grupie
      • Problem
      • Rozwiązanie
      • Omówienie
    • 14.14. Podsumowanie
  • Dodatek A Przypomnienie funkcji okna
    • Grupowanie
      • Definicja grupy w języku SQL
        • Grupy nie mogą być puste
        • Grupy i różne wartości
        • Funkcja COUNT nigdy nie zwraca zera
      • Paradoksy
      • Relacje łączące klauzule SELECT i GROUP BY
    • Tworzenie okien
      • Prosty przykład
      • Kolejność przetwarzania składników zapytań
      • Partycje
      • Skutki występowania wartości NULL
      • Kiedy kolejność ma znaczenie
      • Klauzula ramkowania
      • Ostatnie słowo o ramkowaniu
      • Czytelność + Wydajność = Moc
      • Generowanie zbiorów bazowych
  • Dodatek B Wyrażenia tablicowe (CTE)
    • Podzapytania
    • Wyrażenia tablicowe
    • Podsumowanie
      • O autorach
      • Kolofon
  • Tytuł: SQL. Zapytania i techniki dla bazodanowców. Receptury. Wydanie II
  • Autor: Anthony Molinaro, Robert de Graaf
  • Tytuł oryginału: SQL Cookbook: Query Solutions and Techniques for All SQL Users, 2nd Edition
  • Tłumaczenie: Mikołaj Szczepaniak, Piotr Cieślak
  • ISBN: 978-83-283-7848-3, 9788328378483
  • Data wydania: 2021-08-10
  • Format: Ebook
  • Identyfikator pozycji: sqlzr2
  • Wydawca: Helion