Skip to content

Instantly share code, notes, and snippets.

@stasiek
Created April 14, 2014 00:47
Show Gist options
  • Select an option

  • Save stasiek/10608521 to your computer and use it in GitHub Desktop.

Select an option

Save stasiek/10608521 to your computer and use it in GitHub Desktop.
6-abd
## Aplikacje Bazodanowe - 1 lista
Dany jest schemat bazy danych projektów zawierający następujące relacje:
*Projekt(Id, Nazwa, Budżet, Typ)* – dane projektów
*Zadanie(Id, Nazwa, Typ, Koszt, StopienWykonania, Pracochłonnosc)* – dane zadania
*Pracownik(Id, NIP,Nazwisko, Pesel, DataUr)* – dane pracownika
*PracownikZadanie(Id, IdZadania, IdPracownika, DataOd, DataDo)* – przypisanie pracownika do zadania
*ZadanieProjekt(Id, IdZadania, IdProjektu, DataOd, DataDo)* – przypisanie zadania do projektu
1. Wyraź w języku SQL następujące zapytania:
1) Wypisz sumaryczny koszt projektu na podstawie kosztów zadań, które do tego projektu należą. Wynik
uporządkuj rosnąco oraz uwzględnij w nim tylko te projekty, które są na więcej niż 1000000 PLN.
2) Wypisz wszystkich pracowników starszych niż 30 lat zaangażowanych w projekt o nazwie„Proj1”
3) Wypisz zadania, które nie zostały realizowane przez pracownika „Kowalski” w żadnym projekcie.
4) Wypisz zadanie, którego czas trwania jest największy w danym projekcie.
5) Dla każdego typu zadania wypisz zadania o największej pracochłonności.
6) Dla każdego typu zadania wypisz najstarszego pracownika, który je wykonuje.
7) Wypisz wszystkie zadania, które nie należą do projektu „Proj2”.
8) Dla każdego pracownika wypisz zadanie o największej pracochłonności, które on wykonuje.
9) Dla każdego typu projektu wypisz nazwę zadania, które jest wykonywane najdłużej.
10) Wypisz typy zadań, które nie zostały wykonywane w projektach o typie: „informatyczne”.
***
1) Wypisz sumaryczny koszt projektu na podstawie kosztów zadań, które do tego projektu należą. Wynik uporządkuj rosnąco oraz uwzględnij w nim tylko te projekty, które są na więcej niż 1000000 PLN.
```sql
SELECT p.Nazwa, SUM(z.Koszt), FROM Projekt AS p
INNER JOIN ZadanieProjekt zp ON p.Id = zp.IdProjektu
INNER JOIN Zadanie ZA z ON z.Id = zp.IdZadania
GROUP BY p.Nazwa
HAVING SUM(z.Koszt) > 1000000
ORDER BY SUM(z.koszt) ASC
```
2) Wypisz wszystkich pracowników starszych niż 30 lat zaangażowanych w projekt o nazwie„Proj1”
```sql
SELECT p.Nazwisko, FROM Pracownik AS p
INNER JOIN PracownikZadanie AS pz
ON p.Id = pz.IdPracownika
INNER JOIN ZadanieProjekt AS zp ON zp.IdZadania = pz.IdZadania
INNER JOIN Projekt AS pr ON pr.Id = zp.IdProjektu
WHERE (p.dataUr < YEAR(CURRENTDATE()) - 30)
AND pr.Nazwa = "Proj1"
```
3) Wypisz zadania, które nie zostały realizowane przez pracownika „Kowalski” w żadnym projekcie.
```sql
SELECT z.Nazwa FORM Zadanie AS z
INNER JOIN PracownikZadanie AS pz ON z.Id = pz.IdPracownika
INNER JOIN Pracownik AS pr ON pr.Id = pz.IdPracownika
EXCEPT
SELECT z.Nazwa FROM Zadanie as Z
WHERE pr.Nazwisko = 'Kowalski'
```
4) Wypisz zadanie, którego czas trwania jest największy w danym projekcie.
```sql
SELECT Projekt.Nazwa, Zadanie.Nazwa
FROM Projekt, Zadanie, ZadanieProjekt,
(SELECT Projekt.I, MAX(zp.DataDo - zp.DataOd) czas
FROM z, zp, p
WHERE z.Id = zp.IdZadania
AND p.Id = zp.IdProjektu
GROUP BY Projekt.Id ) Temp
WHERE z.Id = zp.IdZadania
AND p.Id = zp>projektu
AND (zp.DataDo - zp.DataOd) = Temp.Czas
AND p.Id = Temp.Id
```
5) Dla każdego typu zadania wypisz zadania o największej pracochłonności.
```sql
SELECT typ, MAX(pracochlonnosc) FROM Zadanie
GROUP BY Typ
```
***
##Lista 2
1. Zaprojektuj system do obsługi komunikacji miejskiej.
2. Zaprojektuj system do obsługi ligi piłkarskiej.
3. Zaprojektuj system do obsługi księgarni internetowej.
4. Zaprojektuj system do obsługi gabinetu okulistycznego.
W ramach projektu powinien się znaleźć:
1. Opis zakresu funkcjonalności
2. Diagram przypadków użycia
3. Schemat bazy danych.
***
##Aplikacje bazodanowe – lista 3
Dany jest schemat bazy danych projektów zawierający następujące relacje:
*Projekt(Id, Nazwa, Budżet, Typ)* – dane projektów
*Zadanie(Id, Nazwa, Typ, Koszt, StopienWykonania, Pracochłonnosc)* – dane zadania
*Pracownik(Id, NIP,Nazwisko, Pesel, DataUr)* – dane pracownika
*PracownikZadanie(Id, IdZadania, IdPracownika, DataOd, DataDo)* – przypisanie pracownika do zadania
*ZadanieProjekt(Id, IdZadania, IdProjektu, DataOd, DataDo)* – przypisanie zadania do projektu
1. Wypisz zadania, które są wykonywane w co najmniej dwóch projektach.
2. Dla każdego projektu wypisz nazwy zadań, których stopień wykonania jest największy.
3. Wypisz nazwy projektów, które zawierają więcej niż 5 zadań trwających ponad 3 dni.
4. Wypisz nazwy projektów, w których zaangażowanych jest co najmniej dwóch pracowników (bez grupowania)
5. Dla każdego projektu oblicz najdroższe zadanie (największy stosunek kosztu do czasu wykonania)
6. Wypisz pracowników przypisanych do dwóch zadań z różnych projektów w tym samym czasie.
7. Wypisz zadanie nie należące do projektu „Proj1” i nie wykonywane przez pracownika „Kowalski”.
***
1. Wypisz zadania, które są wykonywane w co najmniej dwóch projektach.
```sql
SELECT Zad.*
FROM Zadanie AS Zad WHERE Zad.Id IN
(SELECT zp.IdZadania
FROM Projekt AZ zp
WHERE EXISTS
(SELECT zpz.* FROM ZadanieProjekt AS zpz
WHERE zp.IdZadania = zpz.IdZadania
AND zp.IdProjektu <> zpz.IdProjektu))
```
2. Dla każdego projektu wypisz nazwy zadań, których stopień wykonania jest największy.
```sql
SELECT p.Nazwa, z.Nazwa, FROM Projekt as p
INNER JOIN ZadanieProjekt AS zp ON zp.IdProjektu =p.Id
INNER JOIN Zadanie AS z ON z.Id = zp.IdZadania
INNER JOIN go AS g p.Nazwa = g.Nazwa AND z.pracochlonnosc = g.n
```
3. Wypisz nazwy projektów, które zawierają więcej niż 5 zadań trwających ponad 3 dni.
```sql
SELECT p.Nazwa FROM Projekt p, ZadanieProjekt zp
WHERE DateDiff(zp.DataDo, zp.DataOd) > 3
AND p.Id = zp.IdProjektu
GROUP BY p.nazwa
HAVING COUNT(zp.*)>5
```
4. Wypisz nazwy projektów, w których zaangażowanych jest co najmniej dwóch pracowników (bez grupowania)
```sql
SELECT p.Nazwa
FROM Projekt p, ZadanieProjekt zp1, ZadanieProjekt zp2, ZadaniPracownik zpr1,
ZadaniePracownik zpr2
WHERE
p.Id = zp1.IdProjektu
AND p.Id = zp2.IdProjektu
AND zp1.Id <> zp2.Id
AND zp1.IdZadania = zpr1.IdZadania
AND zp2.IdZadania = zpr2.IdZadania
AND zpr1.IdPracownika <> zpr2.IdPracownika
```
5. Dla każdego projektu oblicz najdroższe zadanie (największy stosunek kosztu do czasu wykonania)
```sql
SELECT Projekt.Nazwa, Zadanie,Nazwa
FROM Projekt, Zadanie, ZadanieProjekt,
(
SELECT ZadanieProjekt.IdProjekt,
MAX(Zadanie.Koszt/CONVERT(int, ZadanieProjekt.DataDo - ZadanieProjekt.DataOd) AS n
FROM Zadanie, ZadanieProjekt
WHERE Zadanie.Id = ZadanieProjekt.IdZadania
GROUP BY ZadanieProjekt.IdProjektu
) AS Temp
WHERE Projekt.Id = Temp.IdProjektu
AND ZadanieProjekt.IdProjektu = Projekt.Id
AND Zadanie.Id = ZadanieProjekt.IdZadania
AND Zadanie.Koszt/CONVERT(int, ZadanieProjekt.DataDo - ZadanieProjekt.DataOd) = Temp.n
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment