gotowiec hotel[584]


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;
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. sprawdzmy 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ł ;
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 DZIAA_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 DZIAA.NUMDZ, DZIAA.NAZWADZ, DZIAA.LOK
FROM PRAC, DZIAA, DZIAA_SR
WHERE PRAC.NUMDZ=DZIAA.NUMDZ AND PRAC.NUMDZ=DZIAA_SR.NUMDZ AND
PRAC.ZAROB > DZIAA_SR.D_SR_ZAROB AND
PRAC.ZATRUD=DZIAA_SR.D_OSTATNIE_ZATR
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 DZIAA.NAZWADZ, PRAC.STANOWISKO
FROM PRAC, DZIAA, PRAC_SR_ZAROB
WHERE PRAC.NUMDZ=DZIAA.NUMDZ AND
PRAC.ZAROB > PRAC_SR_ZAROB. SR_ZAROB AND PRAC.ZATRUD >  2002-02-12
GROUP BY DZIAA.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, DZIAA.NAZWADZ
FROM DZIAA, PRAC
WHERE PRAC.NUMDZ=DZIAA.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
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 DZIAA_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, DZIAA_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;
Poprawne opracowanie zadania z normalizacją


Wyszukiwarka

Podobne podstrony:
Hotel at The end of The Road
Bono & The Million Dollar Hotel?nd Never Let Me Go
hotel
Bono & The Million Dollar Hotel?nd?lling At Your?et
Krzyżaniak November hotel

więcej podobnych podstron