1. Wyświetlić wszystkie informacje z tabeli przedmioty z wyjątkiem pola Opis.
Select Przedmiot_id, Nazwa, Rodzaj,Ects
From Przedmioty;
2. Wyświetlić podstawowe informacje o studenitach (Nazwisko, Imie, student_id) posortowane
malejąco wg nazwiska.
Select Student_id,Imie,Nazwisko
From Studenci
Order By Nazwisko desc;
3. Wyświetlić informacje (Nazwisko, Imie, Id) o wykładowcach z Lublina.
Select Wykladowca_id,Imie,Nazwisko
From Wykladowcy
Where Miasto ='Lublin';
Select Wykladowca_id,Imie,Nazwisko
From Wykladowcy
Where upper (miasto)=upper('lUblin')//po takim wpisaniu wielkość liter w '' nie ma znaczenia
4. Podać informacje, kiedy egzaminowany o id 0000049 zdawał egzaminy z poszczególnych
przedmiotów. Uporządkować informacje według czasu zdawania egzaminów. Zmienić format
wyświetlania daty tak, by wyświetlana była takŜe informacja o nazwie miesiąca, w którym
zdawano egzamin a kolejne elementy daty były oddzielone znakiem /.
SELECT COUNT (*)
FROM Studenci, Zaliczenia, Przedmioty // zlicza wszystkie (tu jest brak relacji miedzy tabelami)
SELECT *
FROM Studenci, Zaliczenia, Przedmioty // pokazuje wszystkie
SELECT Studenci.Student_id, Imie, Nazwisko, Przedmioty.Przedmiot_id, Nazwa, Data_zal
FROM Zaliczenia, Przedmioty, Studenci
WHERE Zaliczenia.Przedmiot_id = Przedmioty.Przedmiot_id
AND Zaliczenia.Student_id = Studenci.Student_id // zaczynamy powiazania
SELECT S.Student_id, Imie, Nazwisko, P1.Przedmiot_id, Nazwa, Data_zal
FROM Zaliczenia Q, Przedmioty P1, Studenci S
WHERE Q.Przedmiot_id = P1.Przedmiot_id
AND Q.Student_id = S.Student_id // wprowadzilismy aliasy (Zaliczenia zamieniamy na Q)
SELECT S.Student_id, Imie, Nazwisko, P1.Przedmiot_id, Nazwa, Data_zal
FROM Zaliczenia Q, Przedmioty P1, Studenci S
WHERE Q.Przedmiot_id = P1.Przedmiot_id
AND Q.Student_id = S.Student_id
AND S.Student_id='0000049'
SELECT S.Student_id, Nazwisko, Imie, P1.Przedmiot_id, Nazwa, Data_zal, TO_CHAR (Data_zal,'DD / Month / YYYY') Data // ta data na koncu daje nam nazwe w tabeli
FROM Zaliczenia Q, Przedmioty P1, Studenci S
WHERE Q.Przedmiot_id = P1.Przedmiot_id
AND Q.Student_id = S.Student_id
AND S.Student_id='0000049'
ORDER BY Data_zal
5. Z jakich przedmiotów przeprowadził egzaminy wykładowca o kodzie 0009 ?
select przedmiot_id
from zaliczenia
where wykładowca_id='0009'
-----------------------------------------
select distinct przedmiot_id (wyswietla ale nie powtarza)
from zaliczenia
where wykladowca_id='0009'
---------------------------------------
select distinct p.przedmiot_id, nazwa (przypisuje numer przedmiotu z nazwa)
from zaliczenia z, przedmioty p
where wykladowca_id='0009'
and z.przedmiot_id=p.przedmiot_id
----------------------------------------
select przedmiot_id, nazwa (odrzuca czesc rekordów z duzej tabeli)
from przedmioty wykonuje sie duzo razy
where przedmiot_id in
(select distinct przedmiot_id
from zaliczenia
where wykładowca_id='0009')
--------------------------------------------
select p.przedmiot_id, nazwa (szybsze działanie, )
from przedmioty p,
(select distinct przedmiot_id
from zaliczenia
where wykładowca_id='0009') x
where p.przedmiot_id=x.przedmiot_id
----------------------------------------
select p.przedmiot_id, nazwa, w.wykładowca_id,nazwisko,imie
from przedmioty p, wykłądowcy w,
(select distinct przedmiot_id, wykładowca_id
from zaliczenia
where wykładowca_id='0007') x
where p.przedmiot_id=x.przedmiot_id
and x.wykladowca_id=w.wykladowca_id
-------------------------------------------
6. Jakie osoby były egzaminowane przez wykładowcę o kodzie 0001 ?
select student_id (wyswietli liste studentów po id)
from zaliczenia
where wykładowca_id='0001'
------------------------------------------
select s.student_id, nazwisko,imie (wyswietli nazwisko i imie i _id)
from zaliczenia z, studenci s
where wykładowca_id='0001'
and z.Student_id=s.Student_id
-------------------------------------------
select distinct s.student_id, s.nazwisko,s.imie ,w.wykladowca_id, w.nazwisko, w.imie
from zaliczenia z, studenci s, wykladowcy w
where w.wykładowca_id='0001'
and z.Student_id=s.Student_id
and w.wykladowca_id=z.wykladowca_id
--------------------------------------
7. Podać informację, w jakie dni tygodnia student o id 0000060 zdawał poszczególne przedmioty.
select s.student_id, nazwisko,imie, p.przedmiot_id,nazwa (wyswietla nazwe)
data_zal
from zaliczenia z, studenci s, przedmioty p
where z.student_id=s.student_id
and s.student_id='0000060'
and p.przedmiot_id=z.przedmiot_id
--------------------------------------------------
select s.student_id, nazwisko,imie, p.przedmiot_id,nazwa, (to_char wyswietla dzien tygodnia)
to_char(data_zal,'day')
from zaliczenia z, studenci s, przedmioty p
where z.student_id=s.student_id
and s.student_id='0000060'
and p.przedmiot_id=z.przedmiot_id
8. Wyświetlić informację, kto, jaki przedmiot i kiedy zdawał w okresie od 20 kwietnia 2009 do 20
maja 2009.
Select S.Student_id,Nazwisko,Imie,P.Nazwa,TO_CHAR(Z.Data_zal,'Day/Month/YYYY')
from Przedmioty P, Zaliczenia Z,Studenci S
where Z.data_zal>'09/04/20' and Z.data_zal<'09/05/20'
and S.Student_id=Z.Student_id and Z.Przedmiot_id=P.Przedmiot_id;
9. Jakie przedmioty zdali juŜ egzaminowani o id 0000061 i 0500323 ?
select x.przedmiot_id, nazwa, u.Student_id, nazwisko||' '|| U.Imie as student, V.wynik
from Studenci U, Zaliczenia v, przedmioty x
where u.Student_id=v.student_id
and x.Przedmiot_id=V.Przedmiot_id
and u.student_id='0000061'
or v.student_id='0500323'
(Wyswietla liste studentów)
10. Wyświetlić tych studentów (Nazwisko, Imie, id), którzy jeszcze nie zdawali przedmiotu o id=7.
select Student_id
from zaliczenia
where Przedmiot_id=7
----------------------
select student_id, Nazwisko, imie
from Studenci
where Student_id not in
(select Student_id
from zaliczenia
where Przedmiot_id=7)
----------------------------------------------
11. Wyświetlić informacje o tych kierunkach (id, nazwa), z których nie przeprowadzono jeszcze
żadnego zaliczenia.
select Kierunek_id, nazwa
from kierunki
where kierunek_id not in
(
select kierunek_id
from zaliczenia)
12. Którzy wykładowcy mają nazwiska zaczynające się na literę B. Podać ich nazwisko, imię oraz
identyfikator ?
select Nazwisko, imie, wykladowca_id
from wykladowcy
where nazwisko like 'B%'
13. Podać jakie przedmioty zdawano kierunku numer 3 w miesiącu lipcu 2010 roku.
select distinct p.nazwa, p.przedmiot_id,k.kierunek_id, To_char(data_zal,'year month')
from zaliczenia z, przedmioty p,kierunki k
where z.przedmiot_id=p.przedmiot_id
and k.kierunek_id=z.kierunek_id
/*and to_char (data_zal,'yyyymm')='201007'
and k.kierunek_id=3*/
--------------------------------------------------------
14. Ile zaliczeń przeprowadził wykładowca o numerze 0036 ?
select w.wykladowca_id, Nazwisko,imie, z.*
from zaliczenia z, wykladowcy w
where z.wykladowca_id='0006'
--------------------------------------------
select w.wykladowca_id, Nazwisko,imie, count(*)
from zaliczenia z, wykladowcy w
where w.wykladowca_id in('0006','0001')
group by w.wykladowca_id, nazwisko, imie
-----------------------------------------------------
15. Podać datę pierwszego i ostatniego zaliczenia przeprowadzonego z kierunku o numerze 1.
select k.kierunek_id, nazwa, min(data_zal) pierwszy,
max(data_zal) ostatni
from kierunki k, zaliczenia z
where k.kierunek_id=z.kierunek_id and k.kierunek_id=1
group by k.kierunek_id, nazwa
16. W ilu zaliczeniach student o id 0500324 uzyskał pozytywny wynik ?
select S.student_id, Nazwisko, imie, count(*)
from studenci s,zaliczenia z
where s.student_id=z.student_id
and Wynik Like 'Z%'
and s.student_id='0500324'
group by s.student_id, nazwisko, imie
---------------------------------------
zad "wymyslone"
select S.student_id, Nazwisko, imie, count(*),
sum(case lower(bo zaliczony z małej litery) (wynik) when 'zaliczony' then 1 else 0 end) Zaliczone,
sum(case lower (wynik) when 'negatywny' then 1 else 0 end) Niezaliczone
from studenci s,zaliczenia z
where s.student_id=z.student_id
group by s.student_id, nazwisko, imie
---------------------------------------------------------------------------------------
17. Ile zaliczeń przeprowadzono z poszczególnych kierunków ?
select k.kierunek_id, nazwa, count(*)
from kierunki k, zaliczenia z
where k.kierunek_id=z.kierunek_id
group by k.kierunek_id, nazwa
----------------------------------------
select count(*) (wyswietla liczbe kierunków)
from kierunki
-------------------------------------------
select k.kierunek_id, nazwa, count(*) (net join)
from kierunki k left join zaliczenia z
on k.kierunek_id=z.kierunek_id
group by k.kierunek_id, nazwa
order by 1
------------------------------------------------
select k.kierunek_id, nazwa, count(*), (count zlicza wartosci nie puste) count(k.kierunek_id),count(z.kierunek_id)
from kierunki k left join zaliczenia z
on k.kierunek_id=z.kierunek_id
group by k.kierunek_id, nazwa
order by 1
----------------------------------------------------------
select k.kierunek_id, nazwa, count(*), z.kierunek_id, count(z.kierunek_id)
from kierunki k, zaliczenia z
where k.kierunek_id=z.kierunek_id(+)
group by k.kierunek_id, nazwa, z.kierunek_id
order by 1
-----------------------------------------------
18. Ile osób podeszło do zaliczenia z poszczególnych przedmiotów ?
select p.przedmiot_id, nazwa, count(*), count(z.student_id)
from przedmioty p, zaliczenia z
where z.przedmiot_id=p.przedmiot_id
group by p.przedmiot_id, nazwa
-------------------------------------------
insert into
przedmioty(przedmiot_id,nazwa) (dodanie wf)
values(8,'WF')
-------------------------------------------------------------------
19. Ile zaliczeń przeprowadzili poszczególni wykładowcy, uwzględnić wszystkich wykładowców?
select w.wykladowca_id, nazwisko ||''||Imie as wykładowca, count(data_zal) as liczba_zal
from wykladowcy w, zaliczenia z
where w.wykładowca_id=z.wykładowca_id(+) <- + wyswietli wszystkich nawet jak nie przeprowadzali zaliczenia
group by w.wykładowca_id, nazwisko, imie
----------------------------------------------------------------
insert into wykladowcy (wykladowca_id, nazwisko, imie)
values ('0098',' einstein','albert')
----------------------------------------------------------------
20. Którzy wykładowcy przeprowadzili więcej niż 10 zaliczeń?
select * from
(select w.wykladowca_id, nazwisko ||''||Imie as wykładowca, count(data_zal) as liczba_zal
from wykladowcy w, zaliczenia z
where w.wykładowca_id=z.wykładowca_id(+)
group by w.wykładowca_id, nazwisko, imie)x
where liczba_zal>10
-----------------------------------------------------------------------------
select w.wykladowca_id, nazwisko ||' '||Imie as wykładowca, count(data_zal) as liczba_zal
from wykladowcy w, zaliczenia z
where w.wykładowca_id=z.wykładowca_id(+)
group by w.wykładowca_id, nazwisko, imie
having count(data_zal) >10
------------------------------------------------------------------
21. Z których kierunków przeprowadzono więcej niŜ 7 zaliczeń ?
select k.kierunek_id, nazwa, count(*)
from zaliczenia z RIGHT JOIN kierunki k
on k.kierunek_id=z.kierunek_id
group by k.kierunek_id, nazwa
22. Jaki przedmiot był zaliczany przez więcej niŜ 5 studentów ?
-------------------------------------------------------------------
select p.przedmiot_id, Nazwa, Count(*), Count(z.student_id)
from przedmioty p, zaliczenia z
where p.przedmiot_id=z.przedmiot_id
Group by p.przedmiot_id, nazwa
------------------------------------------------------------------
select p.przedmiot_id, Nazwa, Count(*), Count(z.student_id), count(distinct z.student_id)
from przedmioty p, zaliczenia z
where p.przedmiot_id=z.przedmiot_id
Group by p.przedmiot_id, nazwa
--------------------------------
select p.przedmiot_id, Nazwa, Count(*), Count(z.student_id), count(distinct z.student_id)
from przedmioty p, zaliczenia z
where p.przedmiot_id=z.przedmiot_id
Group by p.przedmiot_id, nazwa
having count(distinct z.student_id)>5
23. Na ilu kierunkach studiuje kaŜdy ze studentów?
select student_id, count(kierunek_id), count(distinct kierunek_id)
from zaliczenia
group by student_id
--------------------------------
select student_id, count(kierunek_id) as L_zal , count(distinct kierunek_id) as L_kier
from zaliczenia
group by student_id
------------------------------
select s.student_id, nazwisko, imie, x.l_kier
from studenci s,
(select student_id, count(kierunek_id) as L_zal , count(distinct kierunek_id) as L_kier
from zaliczenia
group by student_id)x
where x.student_id=s.student_id
----------------------------------------------
select s.student_id, nazwisko, imie, x.l_kier, nvl(x.l_kier, 100)
from studenci s,
(select student_id, count(kierunek_id) as L_zal , count(distinct kierunek_id) as L_kier
from zaliczenia
group by student_id)x
where x.student_id(+)=s.student_id
-----------------------------------------------------------
select s.student_id, nazwisko, imie, count(distinct kierunek_id)
from studenci S, zaliczenia z
where s.student_id=z.student_id(+)
group by s.student_id, nazwisko, imie
-------------------------------------------------------------------
24. Ile punktów ECTS ma zgromadzone kaŜdy ze studentów?
select s.student_id, nazwisko, imie, sum(p.ects) l_ects
from studenci S, zaliczenia z, Przedmioty p
where s.student_id=z.student_id(+)
and z.przedmiot_id=p.przedmiot_id(+)
and z.wynik(+)='Zaliczony'
group by s.student_id, nazwisko, imie
select s.student_id, nazwisko, imie, sum(NVL(p.ects, 0)) l_ects
from studenci S, zaliczenia z, Przedmioty p
where s.student_id=z.student_id(+)
and z.przedmiot_id=p.przedmiot_id(+)
and z.wynik(+)='Zaliczony'
group by s.student_id, nazwisko, imie
-----------------------------------
25. Ilu studentów ukończyło poszczególne kierunki (zdobyło wymaganą liczbę punktów ECTS)?
select s.student_id, nazwisko, imie, sum(NVL(p.ects, 0)) l_ects, k.kierunek_id, k.nazwa, k.s_ects
from studenci S, zaliczenia z, Przedmioty p, kierunki k
where s.student_id=z.student_id and k.kierunek_id=z.kierunek_id
and z.przedmiot_id=p.przedmiot_id
and z.wynik='Zaliczony'
group by s.student_id, nazwisko, imie,k.kierunek_id, k.nazwa, k.s_ects
------------------------------------------------------------------------------
select s.student_id, nazwisko, imie, sum(NVL(p.ects, 0)) l_ects, k.kierunek_id, k.nazwa, k.s_ects
from studenci S, zaliczenia z, Przedmioty p, kierunki k
where s.student_id=z.student_id and k.kierunek_id=z.kierunek_id
and z.przedmiot_id=p.przedmiot_id
and z.wynik='Zaliczony'
group by s.student_id, nazwisko, imie,k.kierunek_id, k.nazwa, k.s_ects
having sum(nvl(p.ects,0))>0.5*s_ects
------------------------------------------------------------------
26. Jaka jest średnia wyników zaliczeń dla poszczególnych kierunków, za rok 2009?
select avg(NVL(p.ects, 0)) l_ects, k.kierunek_id, k.nazwa, k.s_ects
from studenci S, zaliczenia z, Przedmioty p, kierunki k
where s.student_id=z.student_id and k.kierunek_id=z.kierunek_id
and z.przedmiot_id=p.przedmiot_id
and z.wynik='Zaliczony'
group by k.kierunek_id, k.nazwa, k.s_ects
----------------------------------------------------------------
select avg(NVL(p.ects, 0)) l_ects, k.kierunek_id, k.nazwa, k.s_ects
from zaliczenia z, Przedmioty p, kierunki k
where k.kierunek_id=z.kierunek_id
and z.przedmiot_id=p.przedmiot_id
and z.wynik='Zaliczony'
group by k.kierunek_id, k.nazwa, k.s_ects
----------------------------------------------------------------------
select avg(NVL(p.ects, 0)) l_ects, k.kierunek_id, k.nazwa, k.s_ects
from zaliczenia z, Przedmioty p, kierunki k
where to_char(data_zal,'yyyy')='2009' and k.kierunek_id=z.kierunek_id
and z.przedmiot_id=p.przedmiot_id
and z.wynik='Zaliczony'
group by k.kierunek_id, k.nazwa, k.s_ects
27. Podać datę pierwszego i ostatniego zaliczenia przeprowadzonego na kierunku „Gry i
multimedia”
select nazwa,k.kierunek_id, min(data_zal) pierwszy, max(data_zal) ostatni
from kierunki k, zaliczenia z
where k.kierunek_id=z.kierunek_id
and nazwa like 'G%'
group by nazwa, k.kierunek_id
-----------------------------------------------
select nazwa,k.kierunek_id, min(data_zal) pierwszy, max(data_zal) ostatni
from kierunki k, zaliczenia z
where k.kierunek_id=z.kierunek_id
and nazwa like 'G%ia'
group by nazwa, k.kierunek_id
28. W którym miesiącu i którego roku przeprowadzono najwięcej zaliczeń?
select to_char(data_zal,'yyyy month') okres, count(*) l_zal
from zaliczenia
group by to_char(data_zal,'yyyy month')
-----------------------------------------------------------
select max(count(*))
from zaliczenia
group by to_char(data_zal,'yyyy month')
-------------------------------------------------------------------
select to_char(data_zal,'yyyy mm') okres, count(*) l_zaliczenia
from zaliczenia
group by to_char(data_zal,'yyyy mm')
having count(*)=
(select max(count(*))
from zaliczenia
group by to_char(data_zal,'yyyy month'))
------------------------------------------------------------------
29. Który wykładowca przeprowadził najwięcej zaliczeń z poszczególnych przedmiotów?
select wykladowca_id, nazwisko, imie, p.przedmiot_id, nazwa, count(*)
from wykladowcy w, zaliczenia z, przedmioty p
where w.wykladowca_id=z.wykladowca_id
and z.przedmiot_id=p.przedmiot_id
group by w.wykladowca_id, nazwisko, imie, p.przedmiot_id, nazwa
having count(*)=(select max(count(*)) from zaliczenia x
where x.przedmiot_id=p.przedmiot_id
group by x.wykladowca_id)