Tema de casa
Definitia problemei
Crearea unui tabel
create table tStudent
(i int primary key,
cNume varchar(20),
cInitiala varchar(10),
cPrenume varchar(30),
cGrupa varchar(5),
nVarsta int);
descarcati fisierul Facultate.csv in directorul curent
inlocuiti calea catre fisier cu cea in care l-ati salvat
LOAD DATA LOCAL INFILE 'C:/Facultate.csv' INTO TABLE tStudent
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';
Alternativ, puteti folosi scriptul insert_data_into_tstudent.sql pentru
a incarca aceleasi date in tabela tStudent
Intrebari
- Cati studenti (fete si baieti) sunt ?
- Porniti de la ideea ca fetele au prenumele terminat in 'a' (sau au prenume precum 'Carmen' sau 'Alis' - pe care le puteti preciza intr-o lista sau o tabela); cate studente sunt ?
- Aveti grija sa tratati toate cazurile speciale.
Cati studenti sunt ?
- Acceptand ca regula de la nr. 2 este reala, adaugati o coloana, numita 'cGen' si populati-o conform regulii. Coloana sa fie de tip caracter, cu un camp, valori 'F' sau 'M';
- Scrieti o comanda care sa numere cati studenti sunt. La fel pentru numarul de studente. Folosind in ambele cazuri coloana 'cGen'.
- Care este varsta maxima a studentilor. Dar a studentelor ?
- Creati un tabel cu 4 coloane: 'Gen', 'Varsta medie', 'Varsta minima', 'Varsta maxima'. In acest tabel completati valorile: genul (F sau M), varsta medie, minima, maxima pentru studenti;
- Calculati varsta medie a studentilor pentru fiecare grupa.
- Acceptand ca prima cifra din numele grupei reprezinta facultatea iar cea de-a doua anul, a treia un numar de ordine si caracterele 4 (si eventual 5) reprezinta o specializare, realizati urmatoarele:
- creati tabelele tFacultate, tSpecializare, tAn, tGrupa;
- populati aceste tabele cu informatiile din tabela tStudent astfel: creati atatea facultati cate numere ale sutelor diferite sunt, atatia ani cate numere ale zecilor diferite sunt, atatea grupe diferite cate numere ale unitatilor sunt si atatea specializari cate grupuri diferite alfanumerice sunt;
- stabiliti relatiile corecte (references) intre noile tabele. Atentie, tabela tStudent trebuie si ea refactorizata; eventual, pentru simplitate, lucrati cu o copie a lui tStudent pentru noua structura.
- cate specializari diferite sunt in fiecare an ?
- Pentru facultatea dumneavoastra, exportati cateva rezultate statistice:
- cati studenti sunt in fiecare grupa;
- care este grupa cu media de varsta cea mai ridicata; dar cea mai scazuta ? aceleasi intrebari despre ani. Puteti extrage o regula privind varsta studentilor ?
- care este grupa cu numarul minim de studenti; dar maxim ?
- care este facultatea cu cel mai mare numar de specializari ?
- care este anul cu cele mai multe grupe ?
Punctaj total: 200 puncte
- 10p
- 20p
- 10p
- 10p
- 10p
- 10p
- 20p
- 10p
- 50p
- 50p
Cateva precizari
Tema de casa se va preda numai in forma electronica, trimitand-o prin email la adresa gabriel.preda@upb.ro inainte de data limita stabilita atunci cand veti primi tema.
Tema va consta intr-un fisier de tip text (cu extensia *.txt) in care veti raspunde numai la intrebarile puse in tema de casa; fiecare raspuns va fi precedat de o linie prefatata de
semnul # (comentariu) cu numarul subiectului (de la 1 la 10); textul trebuie sa fie format numai din comenzi SQL care pot fi direct executate intr-o consola SQL. Verificarea temei
se va face prin executarea ei si daca intervin erori, se va considera ca tema nu este completa. In consecinta, nu trimiteti tema fara sa o fi rulat in prealabil.
Exemplu:
# 1)
SELECT * FROM tStudent;
Atentie, raspunsul de mai sus nu este raspunsul corect la intrebarea (1) :-)