zapytania cw 1 i 2, Informatyka


13.5.2 Zapytania SQL

1. Wyświetlić nazwisko, etat oraz płacę podstawową pracowników zespołów

10 i 20 zgodnie z alfabetycznym porządkiem nazwisk.

select nazwisko, etat, placa_pod

from pracownicy1

where id_zesp = 10 or id_zesp = 20

order by nazwisko;

NAZWISKO ETAT PLACA_POD

--------------- ---------- ----------------------

koliberek sekretarka 1150

lech dyrektor 3160

misiecki asystent 1400

muszyński adiunkt 1600

palusz asystent 1200

podgajny profesor 2180

rus adiunkt 1750

7 rows selected

2. Wyświetlić nazwiska i etaty wszystkich asystentów zespołu 20.

select nazwisko, etat

from pracownicy1

where id_zesp = 20 and etat = 'asystent';

NAZWISKO ETAT

--------------- ----------

misiecki asystent

palusz asystent

3. Wydać zapytanie powodujące wyświetlenie następujących informacji:

Informacje o pracownikach

------------------------------------------------------------------------------------------------------------------

Pracownik LECH pracuje na etacie DYREKTOR od 01-JAN-71

Pracownik KOLIBEREK pracuje na etacie SEKRETARKA od 20-FEB-83

Pracownik PODGAJNY pracuje na etacie od 01-MAY-75

Pracownik RUS pracuje na etacie ADIUNKT od 15-SEP-79

Pracownik MUSZYŃSKI pracuje na etacie ADIUNKT od 01-MAY-85

Pracownik MISIECKI pracuje na etacie ASYSTENT od 01-MAR-85

Pracownik PALUSZ pracuje na etacie ASYSTENT od 15-SEP-89

Pracownik DELCKI pracuje na etacie PROFESOR od 01-SEP-77

Pracownik MALEJA pracuje na etacie ADIUNKT od 01-JUL-68

Pracownik WARSKI pracuje na etacie ASYSTENT od 15-JUL-87

Pracownik RAJSKI pracuje na etacie STAśYSTA od 01-JUL-90

Pracownik LUBICZ pracuje na etacie ADIUNKT od 01-SEP-83

Pracownik ORKA pracuje na etacie ASYSTENT od 01-APR-88

Pracownik KOLSKI pracuje na etacie STAśYSTA od 01-SEP-91

select 'Pracownik '|| nazwisko , 'pracuje na etacie '|| etat , 'od '|| pracuje_od

from pracownicy1;

'PRACOWNIK'||NAZWISKO 'PRACUJENAETACIE'||ETAT 'OD'||PRACUJE_OD

------------------------- ---------------------------- ----------------

Pracownik lech pracuje na etacie dyrektor od 71/01/01

Pracownik koliberek pracuje na etacie sekretarka od 83/02/20

Pracownik podgajny pracuje na etacie profesor od 75/05/01

Pracownik rus pracuje na etacie adiunkt od 79/09/15

Pracownik muszyński pracuje na etacie adiunkt od 85/05/01

Pracownik misiecki pracuje na etacie asystent od 85/03/01

Pracownik palusz pracuje na etacie asystent od 89/09/15

Pracownik delcki pracuje na etacie profesor od 77/09/01

Pracownik maleja pracuje na etacie adiunkt od 68/07/01

Pracownik warski pracuje na etacie asystent od 87/07/15

Pracownik rajski pracuje na etacie stażysta od 90/07/01

Pracownik lubicz pracuje na etacie adiunkt od 83/09/01

Pracownik orka pracuje na etacie asystent od 88/04/01

Pracownik kolski pracuje na etacie stażysta od 91/09/01

14 rows selected

8. Wyświetlić nazwiska pracowników, nazwy i adresy zespołów pracowników,

których miesięczna pensja przekracza 2000.

select nazwisko, etat adres , id_zesp
from pracownik, zespol
where placa_pod >2000
pracownik.id_zesp = zesp.id_zesp;

Zapytania w języku SQL

1. Wyświetlić wszystkie informacje o pracownikach.

select * from pracownicy;

2. Wyświetlić informacje o imieniu, nazwisku i pensji pracowników.

select imie, nazwisko, pensja from pracownicy;

3. Wyświetlić informacje o imieniu, nazwisku i pensji pracowników, których pensja jest

większa od 1500.

select imie, nazwisko, pensja from pracownicy where pensja > 1500;

4. Wyświetlić zamówienia o wartości z przedziału <1000,3000>, złożone po dniu 10-05-

1991.

select * from zamowienia where data_zamowienia > '91/05/10' and wartosc between 1000 and 3000;

5. Posortuj wynik zadania 4 po datach złożenia zamówienia i po wartościach zamówień.

select * from zamowienia where data_zamowienia > '91/05/10' and wartosc between 1000 and 3000 order by data_zamowienia, wartosc;

6. Wyświetl imię i nazwisko i nazwę etatu pracowników zatrudnionych na etacie

ANALYST.

Wybieramy dane z dwóch tabel, należy zastosować ączenie (odpowiedni warunek w

WHERE lub klauzulę JOIN).

select p.imie, p.nazwisko, e.etat from pracownicy p, etaty e where p.id_etatu = e.id_etatu and e.etat = 'ANALYST';

7. W bazie danych przechowywana jest informacja o zamówieniach złożonych przez

klientów. Wyświetlić nazwę klienta i wartość zamówienia złożonego przez niego, pod

warunkiem, Że wartość zamówienia jest z przedziału <1000,3000> i zamówienie

złożone zostało po dniu 10-05-1991. Posortować wynik po wartościach zamówień.

select k.nazwa, z.wartosc from klienci k , zamowienia z where z.id_klienta = k.id_klienta and z.data_zamowienia > '91.05.10' and z.wartosc between 1000 and 3000 order by z.wartosc ;

8. Wyświetlić średnią wartość zamówienia poszczególnych klientów, z zamówień

otrzymanych z poprzedniego zadania.

Pogrupuj wiersze po nazwie klienta (przed ORDER BY trzeba dopisać: GROUP BY

nazwa); wartość średnią liczy funkcja AVG(wartość) , należy jej użyć zamiast

wyświetlania wartości zamówienia

select k.nazwa, AVG(z.wartosc) as srednia from klienci k, zamowienia z where z.id_klienta = k.id_klienta and z.data_zamowienia > '91.05.10' and z.wartosc between 1000 and 3000 group by k.nazwa order by srednia;

9. Ilu pracowników zatrudnionych jest na poszczególnych etatach ? Pokazać nazwę etatu

i ilość pracowników.

Wybieramy dane z dwóch tabel, należy zastosować ączenie. Zadanie wykonujemy w

dwóch krokach:

1. Wyświetlić nazwę etatu i id_pracownika zatrudnionego na tym etacie

posortowane po nazwie etatu.

select e.etat, p.id_pracownika from etaty e, pracownicy p where e.id_etatu = p.id_etatu order by e.etat;

2. Utworzyć grupy z identycznymi nazwami etatów (GROUP BY etat) i policzyć

ilość id_pracownika w grupie (COUNT(id_pracownika)).

select e.etat, count(p.id_pracownika) from etaty e , pracownicy p where e.id_etatu = p.id_etatu group by e.etat order by e.etat ;

10. Każdy klient obsługiwany jest przez pewnego pracownika. Wyświetlić tabelę

pokazującą imię i nazwisko pracownika oraz ilu klientów obsługuje dany pracownik.

Pracownicy, którzy nie obsługują klientów nie powinni wystąpić w wyniku (tzn. nie

stosujemy złączeń zewnętrznych).

Zadanie wykonujemy podobnie jak poprzednie - używamy grupowania i zliczania

wierszy.

select p.imie, p.nazwisko, count(k.id_klienta) as ile from pracownicy p, klienci k where p.id_pracownika = k.id_pracownika group by p.imie, p.nazwisko;

11. Zmodyfikować poprzednie zadanie w taki sposób, Ŝeby wynik pokazywał ilość

klientów w poszczególnych miastach, np.:

Imię i nazwisko Miasto Ilość klientów

John Smith New York 5

John Smith Boston 4

Należy dodać grupowanie po nazwach miast.

select p.imie, p.nazwisko, k.miasto, count(k.id_klienta) as ile from pracownicy p, klienci k where p.id_pracownika = k.id_pracownika group by p.imie, p.nazwisko, k.miasto;

5



Wyszukiwarka

Podobne podstrony:
Elektronika, ćw 2, INFORMATYKA semestr 3
ćw. 4, Informacja naukowa i bibliotekoznawstwo, Technologia informacyjna
ćw. 2, Informacja naukowa i bibliotekoznawstwo, Technologia informacyjna
ćw. 9, Informacja naukowa i bibliotekoznawstwo, Technologia informacyjna
ćw. 7, Informacja naukowa i bibliotekoznawstwo, Technologia informacyjna
ćw. 6, Informacja naukowa i bibliotekoznawstwo, Technologia informacyjna
cw 4 (2), Informacja naukowa i bibliotekoznawstwo, Technologia informacyjna
Elektronika, ćw 1, INFORMATYKA semestr 3
cw 4 (3), Informacja naukowa i bibliotekoznawstwo, Technologia informacyjna
Wydawnictwa ćw, Informacja Naukowa i Bibliotekoznawstwo, Materiały
Projektowanie baz danych-CW, INFORMATYKA, Informatyka
List formalny Zapytanie o dodatkowe informacje związane z wynjmem domku letniskowego
List formalny Zapytanie o dodatkowe informacje na temat wygranej wycieczki
ćw 2. tekst (informatyka), studia, semestr 1, ćwiczenia, informatyka
cw 0 1, pwr, informatyka i zarządzanie, Informatyka, algorytmy i struktury danych
tech. ifn. ćw, ^ Turystyka i Rekreacja GWSH Katowice, 2 semestr, technologia informacyjna

więcej podobnych podstron