gotowiec hotel[584]

background image



background image


1.
select id_pokoju from rezerwacje where data_przyjazdu>=”1.5.2006” and
data_wyjazdu<=”31.5.2006” group by 1 having sum (data_wyjazdu-data_przyjazdu)<=21;


background image

2.
Selekt distinct nazwisko frm rezerwacje r, statusy s, klienci k, pokoje p, typy_pokoi t where
r.status_id=status_id.s and r.id_klienta=id_klienta.k and r.id_pokoju=id_pokoju.p and
p.typ_id=typ_id.t and nazwa_statusu=”klient wyjechał” and ilość_osob=1 and
data_przyjazdu>=’1.1.07’ and data_wyjazdu<=’21.1.07’;

3.
Create table Temp (typ_id[primary key],suma_pokoi,ile_dob);

Insert into temp (typ_id, suma_pokoi) values
(select typ_id, count(id_pokoju) from pokoje group by typ_id;

Insert into temp (ile_dob) values
(select typ_id, sum(data_wyjazdu-data_przyjazdu) from rezerwacje, pokoje where
data_przyjazdu>=

data żeby spełnic założenie z cwiczenia

and data_wyjazdu

data żeby spełnic

założenie z cwiczenia

);


Selekt typ_id, (ile_dob/92*100)+’%’as wykorzystanie from temp;

4.>>czy klient już figuruje w bazie?
Selekt id_klienta from klienci where imie=’

imie twojego klienta

’ and nazwisko=’

nazwisko

twojego klienta

’ and rok ur=’

wiadomo

’;

Zwraca id klienta jeśli taki istnieje
A gdy nie ma klienta to:
Insert into klienci(id__klienta, imie, nazwisko,rok_ur) values (identity, ’

imie twojego klienta

’,

nazwisko twojego klienta

’,1983);

No to szukamy wolnego pokoju
Selekt min(id_pokoju) from pokoje p, typy_pokoi t where p.typ_id=typ_id.t and ilość osob=1
and numer not In (select numer from rezerwacje where data przyjazdu>=’

wymysl,logiczne

mysenie nie boli

’ and data_wyjazdu<=

‘wymysl’

) ;

No to rezerwujemy pokoik dla klienta☺
Insert into rezerwacje (id_rezerwacji,
id_klienta,id_pokoju,cena,data_rezerwacji,data_przyjazdu,data_wyjazdu, status_id)
Values( identity,

pozostałe atrybuty wpiszcie sami, przecież nie możecie mieć dokładnie tak

samo, jeśli zaliczyliście ćwiczenia to składnie polecenia chyba znacie :P

);


5.ile razy klient był w hotelu?
Selekt count(id_rezerwacji) from rezerwacje r, klienci k, statusy s
Where k.id_klienta=id_klienta.r and r.status_id=status_id.s and imie=”Kunegunda” and
nazwisko=”brzeczyszczykiewicz” and rok_ur=1940 and data_przyjazdu>

’data zgodnie z

poleceniem

’ and nazwa_statusu=”klient wyjechał”;


6. sprawdźmy czy wszyscy goście dotarli do hotelu☺
Selekt imie, nazwisko, id_pokoju, nazwa_statusu from rezerwacje r, klienci k, statusy s
Where r.id_klienta=id_kienta.k and data_przyjazdu=’

zalukaj do zadania o jaka date chodzi

And nazwa_statusu=’oczekiwanie na klienta’ And nazwa_statusu=’klient przybył’;



background image

7.
Selekt typy_pokoi, nazwa, sum(cena) from rezerwacje r, pokoje p,
Typy_pokoi t where data_przyjazdu>=’

zalukaj do zadania o jaka date chodzi

And data wyjazdu <=’

i tu też

’ group by 1;


8.rachunek
Update rezerwacje set status_id=3 /*klient wyjechał*/ where id_rezerwacji=’43’
Selekt imie, nazwisko, cena, data_przyjazdu, data_wyjazdu from klienci k, rezerwacje r
Where k.id_klienta=id_klienta.r and id rezerwacji=46;

9. najgorsze
Pokarz wszystkie wolne pokoje i zajęte wg kategorii

Wolne pokoje
Create table wolne_pokoje (typ_id,liczba)
Insert into wolne pokoje (typ_id,liczba) values (selekt typ_id, count(*) from rezerwacje,
statusy, pokoje where”

dzisiejsza data

” not between data_przyjazdu and data_wyjazdu and

nazwa statusu=”klient w hotelu” group by 1);

Zajęte pokoje
Create table zajete_pokoje (typ_id,liczba)
Insert into zajete pokoje (typ_id,liczba) values (selekt typ_id, count(*) from rezerwacje,
statusy, pokoje where”

dzisiejsza data

” between data_przyjazdu and data_wyjazdu and nazwa

statusu=”klient w hotelu” group by 1);

Zestawienie
Selekt nazwa_typu w.liczba as [licza wolnych], z.liczba as [liczba zajetycz] from typy_pokoi
t,wolne_pokoje w,zajęte pokoje z where t.typ_id=typ_id.w and t.typ_id=typ_id.z

Czytajcie uważnie co i jak przepisujecie!!!!!

Czytajcie polecenia


Kolejne zadanie opracowane przez Grzegorza

a)

Wypisz działy (NUMDZ, NAZWADZ, i LOK), które mają kierownika (kierowników)
zatrudnionego w firmie po swoim podwładnych i zarabiających więcej niż wynosi
ś

rednia pensja w dziale;

/* Krok 1 – wyliczenie

ś

redniej pensji oraz date ost. zatrudnia w

dz. */
INSERT INTO DZIAŁ_SR (NUMDZ, D_SR_ZAROB, D_OSTATNIE_ZATR)
SELECT NUMDZ, AVG(ZAROB), MAX(ZATRUD) FROM PRAC GROUP BY NUMDZ

/* Krok 2 – wyszukanie pracowników i odpowiadaj

ą

cym im działów */

SELECT DZIAŁ.NUMDZ, DZIAŁ.NAZWADZ, DZIAŁ.LOK
FROM PRAC, DZIAŁ, DZIAŁ_SR
WHERE PRAC.NUMDZ=DZIAŁ.NUMDZ AND PRAC.NUMDZ=DZIAŁ_SR.NUMDZ AND
PRAC.ZAROB > DZIAŁ_SR.D_SR_ZAROB AND
PRAC.ZATRUD=DZIAŁ_SR.D_OSTATNIE_ZATR

background image

b)

Oblicz, jaki procent sumy wszystkich pensji (pensji ogółem) w firmie stanowi pensja
każdego pracownika;


/* Krok 1 – wyliczenie sumy zarobków */
INSERT INTO SUMA_ZAROB (SUMA_ZAROB) SELECT SUM(ZAROB) FROM PRAC;

/* Krok 2 – wyliczenie procentów */
SELECT PRAC.NAZWAP, PRAC.ZAROB/SUMA_ZAROB*100+’%’ AS PROCENT
FROM PRAC, SUMA_ZAROB

c)

Wypisz stanowiska w poszczególnych działach obsadzone przez dwóch lub więcej
pracowników, którzy zarabiają więcej niż wynosi średnia wszystkich pracowników i
którzy zostali zatrudnieni po 12.02.2002 roku.


/* Krok 1 – wyliczenie

ś

redniej wszystkich pracowników */

INSERT INTO PRAC_SR_ZAROB (SR_ZAROB) SELECT AVG(ZAROB) FROM PRAC;

/* Krok 2 – wyszukanie stanowisk
SELECT DZIAŁ.NAZWADZ, PRAC.STANOWISKO
FROM PRAC, DZIAŁ, PRAC_SR_ZAROB
WHERE PRAC.NUMDZ=DZIAŁ.NUMDZ AND
PRAC.ZAROB > PRAC_SR_ZAROB. SR_ZAROB AND PRAC.ZATRUD > ‘2002-02-12’
GROUP BY DZIAŁ.NAZWADZ, PRAC.STANOWISKO
HAVING COUNT(*) >= 2

d)

Wypisz nazwy wszystkich działów wraz z nazwiskami ich kierowników (pracownik
działu, którego stanowisko = KIEROWNIK, w każdym dziale pracuje tylko jeden
kierownik)


SELECT PRAC.NAZWP, DZIAŁ.NAZWADZ
FROM DZIAŁ, PRAC
WHERE PRAC.NUMDZ=DZIAŁ.NUMDZ AND PRAC.STANOWISKO=’KIEROWNIK’

e)

Ustaw pracowników zarabiających ponad 3000$ we wszystkie możliwe pary w ten
sposób, aby po lewej stronie w parze znajdował się pracownik z pensją większą niż
pensja pracownika po prawej stronie. Wypisz wartości NAZWP i ZAROB dla obu
pracowników w parze. Kolumny nazwij następująco NAZWP GÓRNE, GÓRNE,
NAZWP_DOLNE, DOLNE. Posortuj tak, aby wartości w kolumnie GÓRNE były
ustawione od najwyższej do najniższej.


SELECT P1.NAZWP AS [NAZWP GÓRNE], P1.ZAROB AS GÓRNE,
P2.NAZWP AS [NAZWP DOLNE], P2.ZAROB AS DOLNE
FROM PRAC P1, PRAC P2
WHERE P1.ZAROB > 3000 AND P2.ZAROB > 3000 AND P1.ZAROB > P2.ZAROB
ORDER BY 2 DESC

f)

Wskaż wszystkich urzędników, którzy pracują w dziale 10 i których nazwisko nie
rozpoczyna się na literę Z oraz których pensja jest większa niż pensja sprzedawców.
Podaj ID pracownika, nazwisko, stanowisko i zarobki.


/* Krok 1 – wyliczenie

ś

redniej pensji sprzedawców */

INSERT INTO SPRZEDAWCY_SR_ZAROB (SR_ZAROB)
SELECT AVG(ZAROB) FROM PRAC WHERE STANOWISKO=’SPRZEDAWCY’;

/* Krok 2 – wyszukanie urz

ę

dników */

SELECT PRAC.NUMP, PRAC.NAZWP, PRAC.STANOWISKO, PRAC.ZAROB
FROM PRAC, SPRZEDAWCY_SR_ZAROB

background image

WHERE PRAC.NUMDZ=10 AND PRAC.NAZWP NOT LIKE ‘Z%’ AND
PRAC.ZAROB > SPRZEDAWCY_SR_ZAROB.SR_ZAROB


g)

Wskaż pracowników na stanowisku KIEROWNIK, którzy nie maja podwładnych na
stanowisku ANALITYK i których zarobki są większe od zarobków średnich
ANALITYKÓW.


/* Krok 1 – wyliczenie AVG(ZAROB) analityków */
INSERT INTO ANALITYK_SR_ZAROB (SR_ZAROB)
SELECT AVG(ZAROB) FROM PRAC WHERE STANOWISKO=’ANALITYK’;

/* Krok 2 – policzenie analitykow w kazdym dziale */
INSERT INTO DZIAŁ_ANALIT (NUMDZ, ILE_ANALIT)
SELECT NUMDZ, COUNT(NUMP) FROM PRAC
WHERE STANOWISKO=’ANALITYK’ GROUP BY NUMDZ

/* Krok 3 – wyszukanie kierowników */
SELECT PRAC.NUMP, PRAC.NAZWP, PRAC.STANOWISKO
FROM PRAC, DZIAŁ_ANALIT, ANALITYK_SR_ZAROB
WHERE PRAC.STANOWISKO=’KIEROWNIK’ AND
PRAC.NUMDZ=ANALITYK_SR_ZAROB.NUMDZ AND ANALITYK_SR_ZAROB.ILE_ANALIT
= 0 AND
PRAC.ZAROB > ANALITYK_SR_ZAROB.SR_ZAROB


h)

Wyświetli listę zarówno tych pracowników, którzy dostają premię, jak i tych, którzy
mają pensje powyżej średniej.


/* Krok 1 – wyliczenie

ś

redniej pensji */

INSERT INTO PRAC_SR_ZAROB (SR_ZAROB) SELECT AVG(ZAROB) FROM PRAC;

/* Krok 2 – wyszukanie pracowników */
SELECT PRAC.NUMP, PRAC.NAZWP, PRAC.STANOWISKO
FROM PRAC, PREMIE, PRAC_SR_ZAROB
WHERE PREMIE.PROW > 0 OR PRAC.ZAROB > PRAC_SR_ZAROB.SR_ZAROB;





















background image

Poprawne opracowanie zadania z normalizacją


Wyszukiwarka

Podobne podstrony:
gotowiec hotel[584]
TOKIO HOTEL
Hotel dla zwierzat e 1ohk
Hotel WynajemRezerwacjaPokoi
Gotowiec
GOTOWIEC, studia, Administracja I stopnia, III rok Administracji, Prawo ubezpieczeń społecznych
Gotowiec ściąga
Ekonometria 1 kolos (gotowiec)
nasze gotowiec
gotowiec bhp
gotowiec chemizm
Juza gotowiec
Hotel 4, Materiałydoegzaminu
Podstawowe wyposażenie recepcji niezbędne do prawidłowego funkcjonowania hotelu, Hotelarstwo, Hotel
08-05 PAM-Czy jesteście gotowi, ezoteryka
HANZA Hotel 09 2014
Pitbull Hotel room service

więcej podobnych podstron