Documente Academic
Documente Profesional
Documente Cultură
ENUNT
O firm are ca obiect de activitate efectuarea de reparaii de autoturisme. Firma are angajai mai muli
mecanici auto i drept clieni persoanele ce solicit reparaii. Pentru fiecare intervenie se ntocmete o
fi pe care se consemneaz numrul de nmatriculare a autoturismului reparat i alte detalii legate de
reparaie. Pentru simplificarea problemei se consider c la o reparaie particip un singur mecanic.
Se ia spre exemplificare urmtorul model al bazei de date:
CodMecanic Nume
Adresa
Telefon
102
Str. Florilor, nr 2,
Iasi
092.325.452 20/10/2002
Ion Dan
Electric
4000000
2
9. S se afieze numele mecanicilor care au realizat reparaii pentru clientul Mihai Dan i datele la care
au efectuat aceste reparaii.
Interogri UNION
14. S se afieze o list cu toate numele i adresele mecanicilor i clienilor ce au domiciliul n oraul
Braov. n list va figura, ntr-un cmp numit Observatie, n dreptul fiecrui mecanic litera M i n dreptul
fiecrui client litera C.
Interogare cu subinterogare
19. S se tearg din baza de date (vor fi concediai) mecanicii care au participat la reparaiile cu numerele
667 i 668 (se va folosi IN).
Interogare cu parametru
20. S se afieze numerele de n matriculare pentru toate autoturismele reparate ntr-un anumit an
specificat ca parametru.
REZOLVARI
1.
CREATE TABLE MECANICI (CodMecanic NUMBER CONSTRAINT CheieMecanici
PRIMARY KEY, Nume TEXT(25), Adresa TEXT(50), Telefon TEXT(9), DataAngajarii
DATE);
2.
ALTER TABLE MECANICI ADD COLUMN Specializare TEXT(10), [Salariu Incadrare] NUMBER;
3
3.
INSERT INTO MECANICI
VALUES (102, "Ion Dan", "Str. Florilor, nr 2, Iasi", "092.325.452", #20/10/2002#,"Electric", 4000000);
4.
SELECT Nume, Telefon
FROM MECANICI
WHERE [Salariu Incadrare]>4500000 AND Telefon Is Not Null ORDER BY Nume ASC;
5.
SELECT *
FROM MECANICI
WHERE DataAngajarii BETWEEN #01/01/2002# AND #31/01.2002# AND Specializare IN (Electric,
Vopsitor) ORDER BY [Salariu Incadrare] DESC, DataAngajarii ASC;
6.
SELECT DISTINCT [Marca Autoturism]
FROM REPARATII
WHERE DataReparatie>Date()-10;
7.
SELECT NUME, (Date()-DataAngajarii)/365 AS Vechime, IIF(Vechime<3;0;IIF(Vechime<10,0.05,0.07))
AS [Spor Vechime] FROM MECANICI
8.
SELECT Nume, Adresa
FROM REPARATII, CLIENTI
WHERE REPARATII.CodClient=CLIENTI.CodClient AND (NumarInmatriculareAutoturism=10-BV-XYZ
OR NumarInmatriculareAutoturism=12-TR-ABC);
SAU
SELECT Nume, Adresa
FROM REPARATII INNER JOIN CLIENTI ON REPARATII.CodClient=CLIENTI.CodClient
WHERE (NumarInmatriculareAutoturism=10-BV-XYZ OR NumarInmatriculareAutoturism=12-TR-ABC);
9.
SELECT MECANICI.Nume,
DataReparatie FROM MECANICI,
REPARATII, CLIENTI
WHERE MECANICI.CodMecanic=REPARATII.CodMecanic AND
REPARATII.CodClient=CLIENTI.CodClient AND
CLIENTI.Nume=Mihai Dan;
SAU
SELECT MECANICI.Nume, DataReparatie
FROM (MECANICI INNER JOIN REPARATII ON MECANICI.CodMecanic=REPARATII.CodMecanic)
INNER JOIN CLIENTI ON REPARATII.CodClient=CLIENTI.CodClient WHERE CLIENTI.Nume=Mihai
Dan;
10.
SELECT [Marca Autoturism], AVG(Tarif) AS [Cost Mediu]
FROM REPARATII
WHERE AnFabricatie>1990
GROUP BY [Marca Autoturism] ORDER BY AVG(Tarif) DESC;
4
11.
SELECT [Marca Autoturism], AVG(Tarif) AS [Cost Mediu] FROM REPARATII
WHERE AnFabricatie>1990
GROUP BY [Marca Autoturism]
HAVING AVG(Tarif) > 2000000 ORDER BY AVG(Tarif) DESC;
12.
SELECT CLIENTI.CodClient, Nume, SUM(Tarif) AS [Suma incasata]
FROM CLIENTI INNER JOIN REPARATII ON CLIENTI.CodClient=Reparatii.CodClient
WHERE YEAR(DataReparatie)=2000 GROUP BY CodClient, Nume;
13.
SELECT MECANICI.CodMecanic, Nume, COUNT(NrReparatie) AS [Total Reparatii]
FROM MECANICI LEFT JOIN REPARATII ON MECANICI.CodMecanic=REPARATII.CodMecanic
GROUP BY CodMecanic, Nume ORDER BY Nume;
14.
SELECT Nume, Adresa, M AS Observatie
FROM MECANICI
WHERE ADRESA LIKE *Brasov
UNION
SELECT Nume, Adresa, C AS Observatie
FROM CLIENTI
WHERE ADRESA LIKE *Brasov;
15.
DELETE FROM MECANICI
WHERE CodMecanic=101 OR CodMecanic=103;
16.
UPDATE REPARATII
SET MARCA = Renault
WHERE NumarInmatriculareAutoturism=10-B-ABA;
17.
UPDATE MECANICI
SET [Salariu Incadrare]=[Salariu
Incadrare]*1.2 WHERE
DataAngajarii<#10/10/1999#;
18.
TRANSFORM Count(NrReparatie)
SELECT NUME
FROM MECANICI INNER JOIN REPARATIION MECANICI.CodMecanic=REPARATII.CodMecanic
GROUP BY NUME PIVOT YEAR(DataReparatie)
19.
DELETE FROM MECANICI
WHERE CodMecanic IN (SELECT CodMecanic FROM REPARATII WHERE NrReparatie=667 OR
NrReparatie=668) ;
5
20.
SELECT NumarInmatriculareAutoturism
FROM REPARATII
WHERE YEAR(DataReparatie) = [TASTATI ANUL]