Opis forum
Grupa I (zapytania proste)
1. Wyświetl wszystkich studentów, których nazwisko rozpoczyna się od liter A lub W.
SELECT * FROM studenci WHERE nazwisko LIKE 'A%' OR nazwisko LIKE 'W%';
2. Wyświetl nr albumów wszystkich studentów, którzy posiadają kategorię wojskową A.
SELECT nr_albumu FROM wojsko WHERE kategoria = 'A';
3. Spośród prowadzących wybierz wszystkich nie posiadających tytułu inżyniera. Wyniki uporządkuj rosnąco według nazwiska prowadzącego.
SELECT * FROM prowadzacy WHERE tytul NOT LIKE '%inż%' ORDER BY nazwisko;
4. Spośród prowadzących wybierz wszystkich zatrudnionych na stanowisku profesora. Wyniki uporządkuj rosnąco według nazwiska prowadzącego.
SELECT * FROM prowadzacy WHERE stanowisko LIKE '%profesor%' ORDER BY nazwisko;
5. Wyświetl wszystkich pracowników zatrudnionych w Instytucie Politechnicznym, których wynagrodzenie jest mniejsze od 3000 PLN. Wyniki uporządkuj rosnąco według wynagrodzenia.
SELECT * FROM prowadzacy WHERE instytut = 'Politechniczny' AND placa_zasadnicza < '3000' ORDER BY placa_zasadnicza ASC;
Grupa II (zapytania proste z funkcjami)
1. Wyszukaj wszystkich studentów urodzonych w II półroczu 1990 roku. Wyniki uporządkuj rosnąco według daty urodzenia.
SELECT * FROM studenci WHERE date_part('month', data_urodzenia) >= 6 AND date_part('year', data_urodzenia) = 1990 ORDER BY data_urodzenia ASC;
2. Wyświetl wszystkich studentów, którzy w aktualnym miesiącu obchodzą urodziny. Aktualny miesiąc winien być odczytany z wykorzystaniem odpowiedniej funkcji bazy danych. Wyniki uporządkuj rosnąco według dnia miesiąca.
SELECT * FROM studenci WHERE date_part('month', data_urodzenia) = date_part('month', current_date) ORDER BY date_part('day', data_urodzenia) ASC;
3. Wyświetl wszystkich studentów urodzonych w miesiącu lutym. Wyniki uporządkuj rosnąco według daty urodzenia.
SELECT * FROM studenci WHERE date_part('month', data_urodzenia) = '2' ORDER BY data_urodzenia ASC;
4. Wyświetl wynagrodzenia pracowników wraz z obliczoną zaliczką na podatek dochodowy w wysokości:
a) 19% płacy zasadniczej dla pracowników zarabiających do 5000 PLN;
b) 30% płacy zasadniczej dla pracowników zarabiających 5000 PLN lub więcej.
Jako wynik zapytania wyświetl imię, nazwisko, płacę zasadniczą oraz zaliczkę na podatek dochodowy każdego pracownika.
SELECT imie, nazwisko, placa_zasadnicza, placa_zasadnicza*0.19 AS zaliczka FROM prowadzacy WHERE placa_zasadnicza < '5000'
UNION
SELECT imie, nazwisko, placa_zasadnicza, placa_zasadnicza*0.3 AS zaliczka FROM prowadzacy WHERE placa_zasadnicza >= '5000';
5. Wyświetl adresy studentów zamieniając znak / w numerze domu na m. (np. z 98/12 na 98 m. 12). Wyniki posortuj malejąco według miejscowości.
SELECT replace(nr_domu,'/',' m. ') FROM adresy;
Grupa III (modyfikacje danych)
1. Wykonaj aktualizację wynagrodzenia (zwiększenie o 25%) wszystkich pracowników zatrudnionych na stanowisku starszego wykładowcy, przy założeniu, że nowe, zwiększone wynagrodzenie nie może przekroczyć górnej granicy 3500 PLN;
update kop set placa_zasadnicza = placa_zasadnicza *1.25 where stanowisko = 'starszy wykładowca' and (placa_zasadnicza*1.25) <= 3500;
2. Usuń wszystkie fakultety prowadzone prze asystentów, na które nie było nigdy zapisów.
DELETE FROM fakultety WHERE id_fakultetu NOT IN (SELECT id_fakultetu FROM zapisy)
AND id_prowadzacego IN (SELECT id_prowadzacego FROM prowadzacy WHERE stanowisko LIKE 'asystent');
3. Wykonaj aktualizację wynagrodzenia (obniżenie o 10%) wszystkich pracowników, którzy w ciągu ostatnich 5 lat nie prowadzili żadnego fakultetu.
update kopia_prowadzacy set placa_zasadnicza=placa_zasadnicza*0.9
where id_prowadzacego NOT IN( select id_prowadzacego from fakultety where id_fakultetu IN( select id_fakultetu from zapisy
where date_part('year', data_zapisu) between date_part('year',current_date)-5 and date_part('year',current_date) ));
4. Wykonaj aktualizację kodów pocztowych w tabli adresy przypisując kod 33-101 dla wszystkich adresów zlokalizowanych w Tarnowie przy ulicy Mościckiego.
update kopia_adresy set kod_pocztowy = '33-101' where miejscowosc ='Tarnów' and ulica = 'Mościckiego';
5. Zaktualizuj adresy email wszystkich studentów zastępując znak @ ciągiem znaków (at). Jako rezultat wykonania zapytanie zwróć zmodyfikowane dane z tabeli osobiste.
update kopia_osobiste set email= replace(email, '@', 'et');
Grupa IV (podzapytania)
1. Wyświetl nr albumów wszystkich studentów, którzy zapisali się na fakultet u dr hab. inż. Pawła Pawłowskiego lub dr hab. inż. Adama Adamowskiego. Wyniki uporządkuj rosnąco, kluczem alfanumerycznym według nr_albumu. Zapytanie utwórz z wykorzystaniem podzapytań.
select nr_albumu from zapisy
where id_fakultetu IN (select id_fakultetu from fakultety where id_prowadzacego IN (select id_prowadzacego from prowadzacy where tytul IN ('dr hab. inż.') and
imie IN ('Paweł','Adam') And nazwisko IN ('Pawłowski','Adamowski')))
order by nr_albumu
2. Wyświetl wszystkich studentów którzy są zameldowani w Tarnowie lub Dębicy. Wyniki uporządkuj wg nazwiska studenta. Zapytanie utwórz z wykorzystaniem podzapytań.
select * from studenci
where adres_zameldowania IN (select id_adresu from adresy where miejscowosc IN ('Tarnów','Dąbica'))
AND kierunek_studiow=’Informatyka’
Order by nazwisko
3. Wyświetl nazwy wszystkich przedmiotów, z których oceny uzyskali studenci kierunku Matematyka. Zapytanie utwórz z wykorzystaniem podzapytań.
select nazwa_przedmiotu from przedmioty where id_przedmiotu IN
(select id_przedmiotu from oceny where nr_albumu IN
(select nr_albumu from studenci where kierunek_studiow = 'Matematyka'))
SELECT nazwa_przedmiotu, kierunek_studiow
FROM studenci NATURAL JOIN oceny NATURAL JOIN przedmioty
WHERE kierunek_studiow='Informatyka'
GROUP BY nazwa_przedmiotu, kierunek_studiow
ORDER BY nazwa_przedmiotu
4. Wyświetl informacje o przedmiotach (nazwa przedmiotu, nr semestru) oraz średnią uzyskanych z przedmiotu ocen. Zapytanie utwórz z wykorzystaniem podzapytań.
select nazwa_przedmiotu,nr_semestru, (select AVG(ocena) from oceny o where o.id_przedmiotu=p.id_przedmiotu) as srednia from przedmioty p
5. Wyświetl nr albumów wszystkich studentów, którzy zapisali się na fakultet Sieci neuronowe lub Systemy ekspertowe. Wyniki uporządkuj rosnąco według nazwy fakultetu oraz daty zapisu. Zapytanie utwórz tylko z wykorzystaniem podzapytań;
select nr_albumu from zapisy z,
(select id_fakultetu ,nazwa_fakultetu from fakultety where nazwa_fakultetu IN ('Sieci neuronowe','Systemy ekspertowe')) as f
where z.id_fakultetu=f.id_fakultetu
order by f.nazwa_fakultetu,data_zapisu asc
Grupa V (podzapytania z klauzulami ANY / ALL / EXISTS lub funkcjami okienkowania)
1. Wybierz studentów kierunku Matematyka, których średnia ocen jest niższa niż średnia ocen każdego z pozostałych studentów tego kierunku. Rozpatrz tylko oceny z semestru I. Wynik uporządkuj rosnąco według nazwiska oraz imienia.
SELECT s.nr_albumu,(SELECT AVG(ocena) as srednia FROM oceny o JOIN przedmioty USING(id_przedmiotu)
WHERE o.nr_albumu=s.nr_albumu AND kierunek_studiow ='Matematyka' AND nr_semestru ='1') AS srednia
FROM studenci s WHERE
(SELECT AVG(ocena) FROM oceny o WHERE o.nr_albumu=s.nr_albumu) <
(SELECT AVG(ocena) FROM studenci left JOIN oceny USING(nr_albumu) JOIN przedmioty USING(id_przedmiotu) WHERE kierunek_studiow='Matematyka' AND nr_semestru ='1')
2. Wybierz studentów kierunku Informatyka, których średnia ocen jest wyższa niż średnia ocen dowolnego z pozostałych studentów tego kierunku. Wynik uporządkuj rosnąco według nazwiska oraz imienia.
SELECT * FROM (SELECT nr_albumu, nazwisko, imie, AVG(ocena) as srednia
FROM studenci NATURAL JOIN oceny WHERE kierunek_studiow='Informatyka'
GROUP BY nr_albumu, nazwisko, imie) s
WHERE srednia > (SELECT AVG(ocena) FROM studenci NATURAL JOIN oceny
WHERE kierunek_studiow='Matematyka' GROUP BY kierunek_studiow);
3. Wyświetl fakultet(y) na które zapisała się największa liczba studentów. Wyniki uporządkuj malejąco według nazwy fakultetu oraz nazwiska i imienia prowadzącego.
4. Wyświetl fakultet(y) na które zapisała się najmniejsza (większa od 0) liczba studentów. Wyniki uporządkuj według nazwy fakultetu oraz prowadzącego.
5. Wyświetl prowadzących, którzy prowadzą największą liczbę fakultetów. Wyniki uporządkuj rosnąco według imienia i nazwiska prowadzącego.
Grupa VI (złączenia)
1. Wyświetl nr albumów wszystkich studentów, którzy zapisali się na fakultet u dr inż. Lecha Lechowskiego lub dr hab. inż. Wojciecha Wojciechowskiego. Wyniki uporządkuj rosnąco, kluczem liczbowym według nr albumu. Zapytanie utwórz tylko z wykorzystaniem złączeń.
select nr_albumu
from zapisy z natural join fakultety natural join prowadzacy
WHERE tytul || ' ' || imie || ' ' || nazwisko IN ('dr inż. Lech Lechowski', 'dr hab. inż. Wojciech Wojciechowski')
ORDER BY nr_albumu::integer;
2. Wyświetl dane osobowe (imię, nazwisko, pesel) oraz adresowe (ulicę, nr domu, miejscowość, kod pocztowy adresu zameldowania i korespondencyjnego) studentów kierunku Ekonomia.
SELECT s.imie, s.nazwisko, s.pesel,
az.ulica, az.nr_domu, az.miejscowosc, az.kod_pocztowy, az.wojewodztwo,
ak.ulica AS k_ulica, ak.nr_domu AS k_nr_domu, ak.miejscowosc AS k_miejscowosc, ak.kod_pocztowy AS k_kod_pocztowy, ak.wojewodztwo AS k_wojewodztwo FROM studenci s LEFT JOIN adresy az ON az.id_adresu = s.adres_zameldowania LEFT JOIN adresy ak ON ak.id_adresu = s.adres_korespondencyjny WHERE kierunek_studiow ILIKE 'Ekonomia';
3. Wyszukaj informacje o wszystkich studentach kierunku Informatyka. Jako rezultat zapytania wyświetl dane osobowe oraz wojskowe studentów.
Kategoria B D E I NULL
select * from studenci s natural left join wojsko w
where kategoria in ('B','D','E') or kategoria is null and kierunek_studiow ilike 'informatyka'
4. Wyświetl nazwy wszystkich przedmiotów, z których oceny uzyskali studenci kierunku Informatyka. Zapytanie utwórz z wykorzystaniem złączeń.
select DISTINCT nazwa_przedmiotu
from przedmioty p join oceny o on p.id_przedmiotu=o.id_przedmiotu natural join studenci s
where kierunek_studiow ilike 'informatyka'
5. Wyszukaj studentów, którzy posiadają orzeczony stopień niepełnosprawności. Jako wynik zapytania wyświetl nr albumu, imię, nazwisko oraz stopień niepełnosprawności studenta. Zapytanie utwórz z wykorzystaniem złączeń.
select s.nr_albumu,s.imie,s.nazwisko,o.stopien_niepelnosprawnosci
from studenci s natural left join osobiste o
where stopien_niepelnosprawnosci is not null
6. Spośród prowadzących wybierz wszystkich, którzy prowadzili fakultet w roku 2006. Wyniki uporządkuj rosnąco według nazwiska oraz imienia prowadzącego. Zapytanie utwórz z wykorzystaniem złączeń.
SELECT * FROM prowadzacy p NATURAL JOIN fakultety f JOIN zapisy z ON z.id_fakultetu = f.id_fakultetu WHERE date_part('year', z.data_zapisu) = 2006 ORDER BY p.nazwisko,p.imie;
7. Wyświetl nr_albumu, imię oraz nazwisko wszystkich studentów, którzy podczas studiów otrzymali ocenę 2.0. Wyniki uporządkuj rosnąco według nazwiska oraz imienia studenta. Zapytanie utwórz z wykorzystaniem złączeń.
SELECT nr_albumu, imie, nazwisko FROM studenci s NATURAL LEFT JOIN oceny o WHERE o.ocena = '2.0' ORDER BY s.nazwisko, s.imie;
8. Wyświetl dane osobowe (nr_albumu, imię, nazwisko) każdego studenta oraz jego średnią ocen. Zapytanie utwórz z wykorzystaniem złączeń.
SELECT s.nr_albumu, s.imie, s.nazwisko, ROUND(AVG(o.ocena), 2) FROM oceny o NATURAL JOIN studenci s GROUP BY s.nr_albumu, s.imie, s.nazwisko;
9. Wyświetl informacje o fakultetach które na które nigdy nie było zapisów. Jako wynik zapytania wyświetl nazwy fakultetów oraz tytuł, imię i nazwisko prowadzącego. Zapytanie utwórz tylko z wykorzystaniem złączeń.
select f.nazwa_fakultetu,p.tytul,p.imie,p.nazwisko
from fakultety f left join zapisy z using(id_fakultetu) natural join prowadzacy p
where data_zapisu is null
10. Wyszukaj prowadzących którzy prowadzili przynajmniej jeden fakultet, który został wybrany przez studentów Informatyki. Wyniki uporządkuj rosnąco według nazwiska, imienia prowadzącego oraz nazwy fakultetu. Zapytanie utwórz z wykorzystaniem złączeń.
select distinct p.nazwisko,p.imie,f.nazwa_fakultetu
from prowadzacy p join fakultety f using(id_prowadzacego) natural join zapisy z join studenci s using(nr_albumu)
where s.kierunek_studiow ilike 'informatyka'
order by p.nazwisko,p.imie,f.nazwa_fakultetu
Grupa VII (zapytania z funkcjami agregującymi)
1. Wyświetl informacje o średnim, maksymalnym oraz minimalnym wynagrodzeniu pracowników zatrudnionych w poszczególnych instytutach. Posortuj wyniki według nazwy instytutu.
SELECT instytut, ROUND(AVG(placa_zasadnicza),2) AS srednia_pensja, MIN(placa_zasadnicza) AS min, max(placa_zasadnicza) AS max FROM prowadzacy GROUP BY instytut;
2. Wyświetl przedmioty (identyfikatory), średnią, minimalną i maksymalną ocenę oraz liczbę ocen uzyskanych przez studentów z każdego przedmiotu. Średnią wyświetl jako liczbę rzeczywistą, stałoprzecinkową o precyzji 5 oraz skali 2.
3. Wyszukaj pracowników, których wynagrodzenie jest wyższe od średniego wynagrodzenia pracowników zatrudnionych na tym samym stanowisku. W wyniku zapytania wyświetl imię, nazwisko oraz wynagrodzenie pracownika. Wynagrodzenie wyświetl jako liczbę rzeczywistą, stałoprzecinkową o precyzji 5 oraz skali 2.
4. Wyszukaj pracowników, których wynagrodzenie jest wyższe od średniego wynagrodzenia pracowników zatrudnionych w tym samym instytucie. W wyniku zapytania wyświetl imię, nazwisko oraz średnie wynagrodzenie pracownika. Wynagrodzenie wyświetl jako liczbę rzeczywistą, stałoprzecinkową o precyzji 5 oraz skali 2.
5. Wyszukaj studentów, których średnia ocen jest niższa od średniej ocen studentów studiujących na tym samym kierunku studiów. W wyniku zapytania wyświetl nr_albumu oraz średnią ocen studenta. Średnią ocen wyświetl jako liczbę rzeczywistą, stałoprzecinkową o precyzji 5 oraz skali 2.AVG
6. Wyszukaj studentów, których średnia ocen uzyskanych w semestrze I jest niższa od średniej ocen uzyskanych w semestrze II. W wyniku zapytania wyświetl nr_albumu studenta.
7. Oblicz wiek najmłodszego studenta na poszczególnych kierunkach. Jako rezultat wyświetl kierunek studiów oraz wiek najmłodszego studenta.
SELECT kierunek_studiow, MIN(age(data_urodzenia)) FROM studenci GROUP BY kierunek_studiow;
8. Wyszukaj studentów, którzy są starsi od średniej wieku studentów studiujących na tym samym kierunku studiów. W wyniku zapytania wyświetl Imię, Nazwisko oraz wiek studenta.
9. Wyświetl informacje o liczbie studentów przynależących do określonych Wojskowych Komend Uzupełnień. Wyniki uporządkuj rosnąco według nazwy WKU.
10. Oblicz średni wiek studentów na poszczególnych kierunkach. Jako rezultat zapytania wyświetl kierunek studiów oraz średnią wieku studentów.
SELECT kierunek_studiow, AVG(age(data_urodzenia)) FROM studenci GROUP BY kierunek_studiow;
Grupa VIII (zapytania z funkcjami agregującymi, klauzulą HAVING oraz złączeniami/podzapytaniami) -
1. Wyświetl informacje o liczbie studentów zapisanych na poszczególne fakultety w roku 2005. Wyniki uporządkuj rosnąco według nazwy fakultetu oraz nazwiska prowadzącego;
select s.nr_albumu, s.imie, s.nazwisko, count(s.nr_albumu) from studenci s natural join zapisy z where date_part('year', z.data_zapisu)='2005' group by s.nr_albumu, s.imie, s.nazwisko;
2. Oblicz średnią ocen studentów na poszczególnych kierunkach studiów. Jako wynik wyświetl nazwę kierunku oraz średnią ocen.
select s.kierunek_studiow, avg(o.ocena) from studenci s inner join oceny o using(nr_albumu) group by s.kierunek_studiow;
3. Wyszukaj studentów których średnia ocen w semestrze I zawiera się w przedziale obustronnie domkniętym 4.00..5.00. Jako wynik zapytania wyświetl imię, nazwisko, kierunek studiów oraz średnią ocen zaokrągloną do dwóch miejsc po przecinku.
select s.imie,s.nazwisko,s.kierunek_studiow,round(AVG(o.ocena),2) as srednia
from studenci s natural join oceny o natural join przedmioty p
where p.nr_semestru ='1'
group by s.imie,s.nazwisko,s.kierunek_studiow
HAVING Avg(o.ocena) between 4.0 and 5.0
order by srednia ;
4. Wyszukaj wszystkie przedmioty z których studenci otrzymali mniej niż 10 ocen. Jako rezultat wykonania zapytania wyświetl nazwę przedmiotu, nr semestru oraz liczbę ocen.
SELECT p.nazwa_przedmiotu AS "Nazwa przedmiotu", p.nr_semestru AS "Semestr", COUNT(o.id_przedmiotu) AS "Liczba ocen" FROM przedmioty p, oceny o GROUP BY p.nazwa_przedmiotu, p.nr_semestru, p.id_przedmiotu, o.id_przedmiotu HAVING o.id_przedmiotu=p.id_przedmiotu AND COUNT(o.id_przedmiotu)>=10;
5. Wyszukaj wszystkie przedmioty z których średnia ocen w semestrze I jest wyższa od średniej ocen w semestrze II. W wyniku wykonania zapytania wyświetl nazwę przedmiotu, nr semestru oraz średnią ocen.
SELECT p.nazwa_przedmiotu, p.nr_semestru, AVG(o.ocena)
FROM oceny o NATURAL JOIN przedmioty p
GROUP BY nazwa_przedmiotu, nr_semestru
HAVING (SELECT AVG(o1.ocena) FROM oceny o1 NATURAL JOIN przedmioty p1 WHERE p1.nr_semestru = '1' AND p1.nazwa_przedmiotu = p.nazwa_przedmiotu) < (SELECT AVG(o2.ocena) FROM oceny o2 NATURAL JOIN przedmioty p2 WHERE p2.nr_semestru = '2' AND p2.nazwa_przedmiotu = p.nazwa_przedmiotu) ORDER BY 1, 2;
6. Wyszukaj wszystkich studentów, którzy podczas studiów otrzymali z określonego przedmiotu co najmniej dwie oceny niedostateczne. Wyświetl w rezultacie nr albumu oraz nazwę przedmiotu.
SELECT nr_albumu, nazwa_przedmiotu FROM przedmioty p NATURAL JOIN oceny o GROUP BY nazwa_przedmiotu, nr_albumu HAVING (SELECT COUNT(o1.ocena) FROM oceny o1 NATURAL JOIN przedmioty WHERE o1.nr_albumu=o.nr_albumu AND o1.ocena=2.0) > 2;
7. Wyszukaj wszystkie kierunki studiów na których średni wiek studentów jest większy od 25 lat. Jako rezultat zapytania wyświetl kierunek studiów oraz średnią wieku studentów posortowane według rosnąco według średniej wieku studentów.
SELECT kierunek_studiow, AVG(age(data_urodzenia)) FROM studenci
GROUP BY kierunek_studiow
HAVING AVG(age(data_urodzenia)) > INTERVAL '25 years';
8. Wyszukaj najstarszego studenta (najstarszych studentów). Jako rezultat zapytania wyświetl imię, nazwisko, datę urodzenia oraz wiek studenta.
SELECT imie, nazwisko, data_urodzenia, AGE(data_urodzenia) AS "Wiek" FROM studenci GROUP BY data_urodzenia, nazwisko, imie ORDER BY 4 DESC;
9. Wyszukaj kierunki studiów na których studiuje co najmniej 5 studentów. Jako wynik zapytania wyświetl nazwę kierunku oraz liczbę studentów sortując dane rosnąco według liczby studentów.
SELECT kierunek_studiow, COUNT(nr_albumu) FROM studenci s GROUP BY kierunek_studiow
HAVING (SELECT COUNT(s1.nr_albumu) FROM studenci s1 WHERE s1.kierunek_studiow=s.kierunek_studiow) >= 5 ORDER BY 2;
10. Wyświetl dane osobowe (nr_albumu, imię, nazwisko) wszystkich studentów. Dodatkowo, dla studentów którzy kiedykolwiek uczęszczali na fakultet wyświetl informację o liczbie wybranych fakultetów. Posortuj dane rosnąco wg nazwiska oraz imienia studenta.
SELECT s.nr_albumu, s.imie, s.nazwisko, COUNT(z.nr_albumu) AS "Liczba fakultetów" FROM studenci s NATURAL LEFT JOIN zapisy z
GROUP BY s.nr_albumu, s.imie, s.nazwisko
ORDER BY nazwisko, imie;
IX Inne
1). Wyświetl informacje o liczbie studentów przynależących do określonych Wojskowych Komend Uzupełnień. Wyniki uporządkuj rosnąco według nazwy WKU.
select * from studenci inner join wojsko using(nr_albumu) order by wku;
2). Wyświetl prowadzących, którzy prowadzą największą liczbę fakultetów. Wyniki uporządkuj rosnąco według imienia i nazwiska prowadzącego.
select id_prowadzacego, imie, nazwisko, stanowisko from prowadzacy
where id_prowadzacego IN(select id_prowadzacego from prowadzacy inner join fakultety using(id_prowadzacego) )
and
id_prowadzacego IN( select a.id_prowadzacego from fakultety a, fakultety b
where (a.id_prowadzacego = b.id_prowadzacego) and (a.id_fakultetu != b.id_fakultetu ));
3). Usuń wszystkie fakultety prowadzone prze asystentów, na które nie było nigdy zapisów.
delete from kopia_fakul
where id_prowadzacego IN(select id_prowadzacego from prowadzacy inner join kopia_fakul using( id_prowadzacego )
where stanowisko='asystent') and id_fakultetu NOT IN(select f.id_fakultetu from kopia_fakul f, zapisy z where f.id_fakultetu = z.id_fakultetu);
4). Wyświetl nr albumów wszystkich studentów, którzy zapisali się na fakultet Sieci neuronowe lub Systemy ekspertowe. Wyniki uporządkuj rosnąco według nazwy fakultetu oraz daty zapisu. Zapytanie utwórz tylko z wykorzystaniem podzapytań.
select distinct s.nr_albumu, s.imie, s.nazwisko, p.nazwa_przedmiotu from studenci s, przedmioty p where
p.nazwa_przedmiotu IN(select nazwa_przedmiotu from przedmioty r, oceny o where r.id_przedmiotu=o.id_przedmiotu
and (r.nazwa_przedmiotu='Sieci neuronowe' or r.nazwa_przedmiotu='Systemy ekspertowe') );
5). Wyszukaj studentów których średnia ocen w semestrze I zawiera się w przedziale obustronnie domkniętym 4.00..5.00. Jako wynik zapytania wyświetl imię, nazwisko, kierunek studiów oraz średnią ocen zaokrągloną do dwóch miejsc po przecinku.
select s.nr_albumu, s.imie, s.nazwisko, p.nr_semestru, round(avg(o.ocena),2) as srednia from studenci s, oceny o, przedmioty p
where (s.nr_albumu = o.nr_albumu) and (p.id_przedmiotu = o.id_przedmiotu) and p.nr_semestru = '1'
group by s.nr_albumu, s.imie, s.nazwisko, p.nr_semestru having avg(o.ocena) between 4 and 5;
Offline
Gość
Utwórz zapytanie wyszukujące wszystkich studentów przynależą do WKU innego niż w Tarnowie. Wyświetl nr_albumu, imię, nazwisko oraz wku studenta.
SELECT nr_albumu s, imie s, nazwisko s,wku w
from studenci s LEFT OUTER JOIN wojsko w USING (nr_albumu) WHERE NOT w.wku SIMILAR TO '%Tarnowie';
Gość
A co wy tu robicie ?