logo



Problema 11

Evidența orelor dintr-o şcoală se realizează prin intermediul tabelei Ore_curs cu structura Id_ora (N,5), Disciplina (T,50), Id_clasa (N,3), Id_prof (N,2), Ziua (T,10), Ora_start (N,2), unde Ora_start reprezintă ora la care începe desfăşurarea orei de curs.
Cerinţe:
a) Creaţi structura tabelului Ore_curs;
b) Introduceți următoarele înregistrări în tabel:

Id_ora

Disciplina

Id_clasa

Id_prof

Ziua

Ora_start

464

Matematica

34

14

Marti

8

568

Informatica

12

10

Luni

9

521

Informatica

12

10

Joi

9

744

Geografie

24

22

Joi

10

12

Matematica

24

14

Marti

11

230

Informatica

11

11

Vineri

9

c) Afişaţi orele de Informatica, ordonate după ziua şi ora de desfăşurare;
d) Folosind o interogare (secvenţă de instrucţiuni), afişaţi numărul total de ore pentru fiecare disciplină în parte, ordonat descrescător, de la disciplina cu cele mai multe ore, la disciplina cu cele mai puţine ore.

Rezolvare:

# a)

CREATE TABLE Ore_curs (
    Id_ora INT(5),
    Disciplina VARCHAR(50),
    Id_clasa INT(3),
    Id_prof INT(2),
    Ziua VARCHAR(10),
    Ora_start INT(2)
);

# b)

INSERT INTO Ore_curs (Id_ora, Disciplina, Id_clasa, Id_prof, Ziua, Ora_start)
VALUES
(464, 'Matematica', 34, 14, 'Marti', 8),
(568, 'Informatica', 12, 10, 'Luni', 9),
(521, 'Informatica', 12, 10, 'Joi', 9),
(744, 'Geografie', 24, 22, 'Joi', 10),
(12, 'Matematica', 24, 14, 'Marti', 11),
(230, 'Informatica', 11, 11, 'Vineri', 9);

SELECT * from Ore_curs;

# c)

SELECT * FROM Ore_curs
WHERE Disciplina = 'Informatica'
ORDER BY FIELD(Ziua, 'Luni', 'Marti', 'Miercuri', 'Joi', 'Vineri'), Ora_start;

/*Explicație:

FIELD(Ziua, 'Luni', 'Marti', 'Miercuri', 'Joi', 'Vineri') va ordona zilele săptămânii într-o ordine specifică.
*/
    
# d)

SELECT Disciplina, COUNT(*) AS Nr_ore
FROM Ore_curs
GROUP BY Disciplina
ORDER BY Nr_ore DESC;

/*Această interogare va număra câte ore sunt pentru fiecare disciplină și le va ordona descrescător în funcție de numărul de ore.*/

 

 



Copyright © 2016 Kalytheo