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.
jak na razie mi sie podoba :) w jednym miejscu between jest napisane przez dwa "e" czyli "beetwen" polecam ten kurs :)
OdpowiedzUsuńWHERE (salary/12)>800 = WHERE salary>800*12
OdpowiedzUsuńto samo ale nie dla optymalizatora
Spowodowane kolejnością wykonywania działań? Szybciej wykona zapytanie w którym najpierw oblicza wartość (salary/12)?
UsuńCzy ktoś wie w jaki sposób można uciąć te długie liczby po przecinku przy obliczonej miesięcznej wypłacie?
OdpowiedzUsuńFunkcją round. Omawiałem ją w rozdziale poświęconym funkcjom matematycznym.
OdpowiedzUsuńRozwiązanie:
OdpowiedzUsuń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)
last_name like '%a% - wyświetli również tych, którzy mają a na końcu imienia.
OdpowiedzUsuń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;