Sie sind auf Seite 1von 6

/*1*/

UPDATE profesori
SET Adresa_Postala_Profesor = 'mun. Chisinau'
WHERE Adresa_Postala_Profesor IS NULL;
SELECT *FROM profesori;

/*3*/

ALTER TABLE grupe


ADD
Sef_Grupa INT,
Prof_Indrumator INT;

ALTER TABLE grupe ADD CONSTRAINT unique_sef UNIQUE(Cod_Grupa,Sef_Grupa);


ALTER TABLE grupe ADD CONSTRAINT unique_prof UNIQUE(Cod_Grupa,Prof_Indrumator);

/*Sef1*/
DECLARE @SEF1 INT;

SELECT TOP 1 @SEF1 = Id_Student


FROM
studenti_reusita
WHERE Id_Grupa = 1
GROUP BY Id_Student
ORDER BY Round(AVG(Cast (Nota as float)),2) DESC;

UPDATE grupe
SET Sef_Grupa = @SEF1
WHERE Id_Grupa = 1;

/*Sef2*/
DECLARE @SEF2 INT;

SELECT TOP 1 @SEF2 = Id_Student


FROM
studenti_reusita
WHERE Id_Grupa = 2
GROUP BY Id_Student
ORDER BY Round(AVG(Cast (Nota as float)),2) DESC;

UPDATE grupe
SET Sef_Grupa = @SEF2
WHERE Id_Grupa = 2;

/*Sef3*/
DECLARE @SEF3 INT;

SELECT TOP 1 @SEF3 = Id_Student


FROM
studenti_reusita
WHERE Id_Grupa = 3
GROUP BY Id_Student
ORDER BY Round(AVG(Cast (Nota as float)),2) DESC;

UPDATE grupe
SET Sef_Grupa = @SEF3
WHERE Id_Grupa = 3;
/*Prof1*/

DECLARE @PROF1 INT;

SELECT TOP 1 @PROF1 = Id_Profesor


FROM
studenti_reusita
WHERE Id_Grupa = 1
GROUP BY Id_Profesor
ORDER BY COUNT(distinct Id_Disciplina) DESC;

UPDATE grupe
SET Prof_Indrumator = @PROF1
WHERE Id_Grupa = 1;

/*Prof2*/

DECLARE @PROF2 INT;

SELECT TOP 1 @PROF2 = Id_Profesor


FROM
studenti_reusita
WHERE Id_Grupa = 2
GROUP BY Id_Profesor
ORDER BY COUNT(distinct Id_Disciplina) DESC;

UPDATE grupe
SET Prof_Indrumator = @PROF2
WHERE Id_Grupa = 2;

/*Prof3*/

DECLARE @PROF3 INT;

SELECT TOP 1 @PROF3 = Id_Profesor


FROM
studenti_reusita
WHERE Id_Grupa = 3
GROUP BY Id_Profesor
ORDER BY COUNT(distinct Id_Disciplina) DESC;

---4

UPDATE grupe
SET Prof_Indrumator = @PROF3
WHERE Id_Grupa = 3;

SELECT *FROM grupe;

SELECT *FROM studenti_reusita


WHERE Id_Student = 118 OR Id_Student = 152 OR Id_Student = 127;

UPDATE studenti_reusita
SET Nota = CASE
WHEN Nota = 10 THEN 10
WHEN Nota < 10 THEN Nota+1
END
WHERE Id_Student = 118 OR Id_Student = 152 OR Id_Student = 127;
---5

DROP TABLE IF EXISTS profesori_new;


CREATE TABLE profesori_new(
Id_Profesor INT NOT NULL,
Nume_Profesor VARCHAR(255) NOT NULL,
Prenume_Profesor VARCHAR (255) NOT NULL,
Localitate VARCHAR(255) DEFAULT 'mun. Chisinau',
Adresa1 VARCHAR(255) NULL,
Adresa2 VARCHAR(255) NULL,
PRIMARY KEY CLUSTERED
(
Id_Profesor ASC)) ON [PRIMARY]
GO

INSERT INTO profesori_new(Id_Profesor,Nume_Profesor,Prenume_Profesor)


SELECT
Id_Profesor,
Nume_Profesor,
Prenume_Profesor
FROM
profesori;

SELECT *FROM profesori_new;


SELECT Id_Profesor,
LEFT(Adresa_Postala_Profesor,PATINDEX('%_,
%',Adresa_Postala_Profesor))'Localitate',
SUBSTRING(Adresa_Postala_Profesor,PATINDEX('%,%',Adresa_Postala_Profesor)
+1,
PATINDEX('%_, [0-9]%',Adresa_Postala_Profesor)-PATINDEX('%,
%',Adresa_Postala_Profesor)) 'Adresa1',
SUBSTRING(Adresa_Postala_Profesor,
PATINDEX('% [0-9]%',Adresa_Postala_Profesor)+1,
PATINDEX('%[0-9],%',Adresa_Postala_Profesor+ ',')-PATINDEX('%
[0-9]%',Adresa_Postala_Profesor))'Adresa2'
INTO #temp_table
FROM profesori;

SELECT *FROM #temp_table;

MERGE profesori_new p
USING #temp_table t
ON (p.Id_Profesor = t.Id_Profesor)
WHEN MATCHED
THEN UPDATE SET
p.Localitate = t.Localitate,
p.Adresa1 = t.Adresa1,
p.Adresa2 = t.Adresa2
WHEN NOT MATCHED BY TARGET
THEN INSERT (Localitate, Adresa1, Adresa2)
VALUES (t.Localitate, t.Adresa1, t.Adresa2)
WHEN NOT MATCHED BY SOURCE
THEN DELETE;

UPDATE profesori_new
SET Localitate = 'mun. Chisinau',
Adresa1 = NULL,
Adresa2 = NULL
WHERE Localitate = '' OR Adresa1 = '' OR Adresa2 = '';

SELECT *FROM profesori_new;

---6

USE universitatea
GO
IF OBJECT_ID('orarul','U') IS NOT NULL DROP TABLE orarul;
GO
CREATE TABLE orarul(Id_Disciplina INT NOT NULL,
Id_Profesor INT,
Id_Grupa SMALLINT,
Zi CHAR(2),
Ora TIME,
Auditoriu INT,
Bloc CHAR(1) NOT NULL DEFAULT ('B'),
PRIMARY KEY (Id_Grupa,Zi,Ora,Auditoriu));

INSERT INTO orarul(


Id_Disciplina,
Id_Profesor,
Id_Grupa,
Zi,
Ora,
Auditoriu
)
VALUES
(
107,
101,
1,
'lu',
'08:00',
202
),
(
108,
101,
1,
'lu',
'11:30',
501
),
(
119,
117,
1,
'lu',
'13:00',
501
);

SELECT *FROM orarul;

---7

INSERT INTO orarul(


Id_Disciplina,
Id_Grupa,
Zi,
Ora,
Auditoriu
)
VALUES
(
108,
2,
'lu',
'08:00',
101
),
(
120,
2,
'lu',
'11:30',
104
),
(
107,
2,
'lu',
'13:00',
609
);

DECLARE @Mircea INT;

SELECT TOP 1 @Mircea = Id_Profesor


FROM studenti_reusita
WHERE
Id_Disciplina = 120 AND Id_Grupa = 2;

DECLARE @Bivol INT;

SELECT TOP 1 @Bivol = Id_Profesor


FROM studenti_reusita
WHERE
Id_Disciplina = 108 AND Id_Grupa = 2;

DECLARE @Micu INT;

SELECT TOP 1 @Micu = Id_Profesor


FROM studenti_reusita
WHERE
Id_Disciplina = 107 AND Id_Grupa = 2;

UPDATE orarul
SET Id_Profesor = @Bivol
WHERE Id_Disciplina = 108;

UPDATE orarul
SET Id_Profesor = @Mircea
WHERE Id_Disciplina = 120;

UPDATE orarul
SET Id_Profesor = @Micu
WHERE Id_Disciplina = 107;

SELECT *FROM orarul;

---8
CREATE INDEX ix_cod_grupa
ON grupe(Cod_Grupa);

CREATE INDEX ix_special_facult


ON grupe(Specialitate,Nume_Facultate);

CREATE INDEX ix_nume_prenume_prof


ON profesori (Nume_Profesor,Prenume_Profesor);

CREATE INDEX ix_orarul_bloc ON orarul (Bloc ASC)


WHERE Bloc != 'B'
WITH (SORT_IN_TEMPDB = ON,
PAD_INDEX = ON,
FILLFACTOR = 90);

CREATE INDEX ix_nume_prenume_stud


ON studenti (Nume_Student,Prenume_Student);

CREATE INDEX ix_discip_prof


ON studenti_reusita (Id_Disciplina,Id_Profesor);

CREATE INDEX ix_eval_nota


ON studenti_reusita (Tip_Evaluare,Nota);

Das könnte Ihnen auch gefallen