sobota, 6 listopada 2010

Kurs Oracle SQL . Filtrowanie wierszy

Filtrowanie wierszy

Filtrowanie z użyciem operatorów


Wyniki zapytań możemy filtrować poprzez spełnienie warunków przez poszczególne rekordy wyniku. Filtrowanie wykonuje się poprzez zastosowanie słowa WHERE.

Najprostszy przykład:



W wyniku tego zapytania zostaną wyświetlone tylko departamenty których kod lokacji jest równy 1700.


Filtrować możemy również przy użyciu wymienionych wcześniej operatorów. Oto kilka przykładów:

Wyświetlenie tych departamentów których kod lokacji jest różny od 1700.





Wyświetlenie tylko tych pracowników którzy zarabiają ponad 10 tyś dolarów rocznie.






Wyświetlenie tylko tych pracowników których miesięczne przychody przekraczają 800 dolarów.




beetween


Wyświetlenie tylko tych pracowników którzy zarabiają pomiędzy 8000 a 12000 $ rocznie.




Like


Do wyrażenia LIKE stosuje się dodatkowe operatory: % oraz _
Znak % oznacza dowolny ciąg znaków dowolnej długości.
Znak _ oznacza pojedynczy nieznany znak.


Wyświetlenie (bez powtórzeń) imion tych pracowników których imiona zaczynają się na M.



Wyświetlenie imion tych pracowników którzy mają literę i jako drugą w imieniu:




In


Wyświetlenie tylko tych departamentów które mają jeden z numerów: 10,40,180



Ćwiczenia



1. Wyświetl wszystkich pracowników których przełożonym jest manager o id 123 (z tabeli employees)
2. Wyświetl wszystkich pracowników zarabiających więcej niż 8000 rocznie.
3. Wyświetl wszystkich pracowników których miesięczne przychody są większe niż 1100 dolarów
4. Wyświetl wszystkich którzy zarabiają więcej niż 9 tyś ale mniej niż 13 tyś rocznie.
5. Wyświetl wszystkich którzy zarabiają miesięcznie więcej niż 800$ ale mniej niż 1200$.
6. Wyświetl wszystkich pracowników których imię kończy się na a.
7. Wyświetl wszystkich których nazwiska mają w środku literę a i jednocześnie zarabiają więcej niż 8000 dolarów rocznie.
8. Wyświetl tych których przełożonymi są managerowie o id 100 i 123.






Ten temat omawiam na poniższych szkoleniach:
Podstawy Oracle SQL
Podstawy SQL i PL/SQL
Możesz w nich uczestniczyć, a jako czytelnik tego bloga otrzymasz 10% zniżki - poinformuj o tym fakcie konsultanta.

7 komentarzy:

  1. jak na razie mi sie podoba :) w jednym miejscu between jest napisane przez dwa "e" czyli "beetwen" polecam ten kurs :)

    OdpowiedzUsuń
  2. WHERE (salary/12)>800 = WHERE salary>800*12
    to samo ale nie dla optymalizatora

    OdpowiedzUsuń
    Odpowiedzi
    1. Spowodowane kolejnością wykonywania działań? Szybciej wykona zapytanie w którym najpierw oblicza wartość (salary/12)?

      Usuń
  3. Czy ktoś wie w jaki sposób można uciąć te długie liczby po przecinku przy obliczonej miesięcznej wypłacie?

    OdpowiedzUsuń
  4. Funkcją round. Omawiałem ją w rozdziale poświęconym funkcjom matematycznym.

    OdpowiedzUsuń
  5. Rozwiązanie:

    1. Select first_name, last_name from employees where manager_id = 123
    2. Select first_name, last_name from employees where salary > 8000
    3. Select first_name, last_name, salary, salary/12 miesieczna_pensja from employees where salary/12 > 1100
    4. Select first_name, last_name, salary from employees where salary > 9000 and salary < 13000
    5. Select first_name, last_name, salary/12 miesieczna_pensja from employees where salary/12 > 800 and salary/12 < 1200
    6. Select first_name, last_name from employees where first_name like '%a'
    7. Select first_name, last_name from employees where last_name like '%a%' and salary > 8000
    8. Select first_name, last_name from employees where manager_id in (100,123)

    OdpowiedzUsuń
  6. last_name like '%a% - wyświetli również tych, którzy mają a na końcu imienia.
    Natomiast last_name like '%a_% - tylko tych, którzy w środku.

    SELECT
    first_name, last_name, salary AS MONTHLY
    FROM
    employees
    WHERE
    first_name LIKE ('%a_%') AND salary > 8000
    ORDER BY
    salary;

    OdpowiedzUsuń