Interogări SQL

Descărcați ca docx, pdf sau txt
Descărcați ca docx, pdf sau txt
Sunteți pe pagina 1din 7

1.

Să se afișeze lista ordonată alfabetic a produselor din categoria Ambalaje, care au


unitatea de măsură ”bucată” sau ”kilogram” și a căror denumire debutează cu cuvântul
Ambalaje.
SELECT produs.codprodus, produs.denumire, produs.unitatemasura
FROM produs
WHERE (((produs.[categorie])='ambalaje') AND ((produs.[unitatemasura]) In ('bucata','kg'))
AND ((produs.[Denumire]) Like 'Ambalaje*'))
ORDER BY produs.denumire;

2. Să se afișeze comenzile emise în ultimele 300 de zile de clientul cu codul 111.


SELECT Comanda.nrcomanda, Comanda.datacomanda, Comanda.codclient
FROM Comanda
WHERE (((Comanda.[datacomanda])>=Date()-300) AND ((Comanda.[Codclient])='111'));

3. Să se afișeze lista comenzilor emise de un client specificat ca parametru, ordonată


cronologic după data comenzii.
SELECT Comanda.nrcomanda, Comanda.datacomanda
FROM Client INNER JOIN Comanda ON Client.codclient=comanda.codclient
WHERE Client.denumireclient=[Introduceti denumirea clientului]
ORDER BY Comanda.Datacomanda;

4. Să se afișeze lista ordonată alfabetic a clienților din București, ale căror denumiri
încep cu o literă aflată în intervalul alfabetic A-T și care au emis comenzi în
perioada 1 ianuarie 2019-1 ianuarie 2020 (utilizând două sintaxe diferite de
realizare)
Var 1
SELECT DISTINCT Client.CodClient, Client.DenumireClient
FROM Client INNER JOIN Comanda ON Client.CodClient = Comanda.CodClient
WHERE (((Client.DenumireClient) Like "[A-T]*") AND ((Client.OrasClient) Like
"Bucuresti") AND ((Comanda.DataComanda) Between #1/1/2019# And #1/1/2020#))
ORDER BY Client.DenumireClient;

1
Var 2
SELECT DISTINCT Client.CodClient, Client.DenumireClient
FROM Client, Comanda
WHERE (((Client.CodClient)=[Comanda].[CodClient]) AND ((Client.DenumireClient) Like
"[A-T]*") AND ((Client.OrasClient) Like "Bucuresti") AND ((Comanda.DataComanda)
Between #1/1/2019# And #1/1/2020#))
ORDER BY Client.DenumireClient;

5. Să se afișeze lista ordonată alfabetic a produselor care nu au fost niciodată


comandate (utilizând două sintaxe diferite de realizare)
Var 1
SELECT Produs.CodProdus, Produs.Denumire
FROM Produs LEFT JOIN ContinutComanda ON Produs.CodProdus =
ContinutComanda.CodProdus
WHERE (((ContinutComanda.NrComanda) Is Null))
ORDER BY Produs.Denumire;

Var 2
SELECT PRODUS.CODPRODUS, PRODUS.DENUMIRE
FROM PRODUS
WHERE PRODUS.CODPRODUS Not In (SELECT
CONTINUTCOMANDA.CODPRODUS
FROM CONTINUTCOMANDA)
ORDER BY PRODUS.DENUMIRE;

6. Să se afișeze lista ordonată invers alfabetic după denumire a produselor care au


fost comandate în ultimii 10 ani în cantități cuprinse între 10 și 400 (utilizând
doua sintaxe diferite)
Var 1
SELECT DISTINCT Produs.CodProdus, Produs.Denumire
FROM Produs INNER JOIN (Comanda INNER JOIN ContinutComanda ON
Comanda.NrComanda = ContinutComanda.NrComanda) ON Produs.CodProdus =
ContinutComanda.CodProdus
WHERE (((ContinutComanda.Cantitate) Between 10 And 400) AND ((Year([Comanda].
[DataComanda]))>=Year(Date())-10))
ORDER BY Produs.Denumire DESC;

Var 2
SELECT DISTINCT Produs.CodProdus, Produs.Denumire
FROM Produs, Comanda, ContinutComanda
WHERE Produs.CodProdus = ContinutComanda.CodProdus AND Comanda.NrComanda =
ContinutComanda.NrComanda AND ContinutComanda.Cantitate Between 10 And 400 AND
Year(Comanda.DataComanda)>=Year(Date())-10
ORDER BY Produs.Denumire DESC;

7. Să se afișeze lista primelor 3 produse care au înregistrat cele mai mari prețuri de
comandă.
SELECT TOP 3 Produs.codprodus, Produs.Denumire, ContinutComanda.pret

2
FROM Produs INNER JOIN Continutcomanda ON
produs.codprodus=continutcomanda.codprodus
ORDER BY continutcomanda.pret DESC;

8. Pentru fiecare produs de pe comanda 1, să se calculeze și să se afișeze valoarea,


TVA-ul, valoarea cu TVA.
SELECT nrcomanda, codprodus, cantitate, pret, [cantitate]*[pret] AS valoare, [valoare]*0.19
AS TVA, [valoare]+[TVA] AS [valoare cu TVA]
FROM continutcomanda
WHERE nrcomanda=1;

9. Să se afișeze valoarea totală a comenzilor și numărul total de comenzi aferente


fiecărui client în parte pe anul 2020.
SELECT client.codclient, client.denumireclient,
SUM(continutcomanda.cantitate*continutcomanda.pret) AS [valoare comanda],
COUNT(comanda.nrcomanda) AS [Total comenzi]
FROM Client, comanda, continutcomanda
WHERE client.codclient=comanda.codclient AND
comanda.nrcomanda=continutcomanda.nrcomanda AND Year(comanda.datacomanda)=2020
GROUP BY client.codclient, client.denumireclient;

10. Să se afișeze prețul maxim, prețul minim și prețul mediu aferent fiecărui produs
comandat în anul curent.
SELECT produs.codprodus, produs.denumire, MAX(continutcomanda.pret) AS [Pret
maxim], MIN(continutcomanda.pret) AS [Pret minim], AVG(continutcomanda.pret) AS [Pret
mediu]
FROM produs, continutcomanda, comanda
WHERE produs.codprodus=continutcomanda.codprodus AND
continutcomanda.nrcomanda=comanda.nrcomanda AND
YEAR(Comanda.Datacomanda)=Year(Date())
GROUP BY produs.codprodus, produs.denumire;

11. Să se afișeze clienții care în ultimii 10 ani au emis mai puțin de 10 comenzi.
SELECT client.codclient, client.denumireclient, COUNT(comanda.nrcomanda) AS [total
comenzi]
FROM client INNER JOIN comanda ON client.codclient =comanda.codclient
WHERE YEAR(comanda.datacomanda)>=YEAR(DATE())-10
GROUP BY client.codclient, client.denumireclient
HAVING COUNT(comanda.nrcomanda)<10
ORDER BY COUNT(comanda.nrcomanda) DESC;

12. Să se afișeze clienții care în anii 2018,2019 si 2020, trimestrul 1 au comandat


produse cu o valoare totală cuprinsă între 1000 și 20000 RON.
SELECT client.codclient, client.denumireclient,
SUM(continutcomanda.pret*continutcomanda.cantitate) AS [Valoare totala]
FROM Client, comanda, continutcomanda
WHERE client.codclient=comanda.codclient AND
comanda.nrcomanda=continutcomanda.nrcomanda AND year(comanda.datacomanda) IN
(2018,2019,2020) AND Datepart('q', comanda.datacomanda)=1
GROUP BY client.codclient, client.denumireclient

3
HAVING SUM(continutcomanda.pret*continutcomanda.cantitate) between 1000 AND
20000;

13. Să se creeze tabela Produse Nevandabile care să conțină toate produsele care nu
au comenzi.
SELECT Produs.CodProdus, Produs.Denumire, ContinutComanda.NrComanda INTO
[PRODUSE NEVANDABILE]
FROM Produs LEFT JOIN ContinutComanda ON Produs.CodProdus =
ContinutComanda.CodProdus
WHERE ContinutComanda.NrComanda Is Null;

14. Să se majoreze cu 20% prețul unui produs specificat ca parametru care apare pe
comanda cu numărul 1.
UPDATE continutcomanda SET PRET = [PRET]*1.2
WHERE codprodus=[introduceti codul de produs] AND nrcomanda=1;

15. Să se creeze tabela Produse nealimentare care să cuprindă produsele din


categoria Ambalaje.
SELECT produs.codprodus, produs.denumire, produs.unitatemasura, produs.categorie INTO
[produse nealimentare]
FROM PRODUS
WHERE CATEGORIE='AMBALAJE';

16. Să se adauge produsele din categoria Detergenți în tabela Produse Nealimentare.


INSERT INTO [Produse Nealimentare] ( CodProdus, Denumire, UnitateMasura, Categorie )
SELECT Produs.CodProdus, Produs.Denumire, Produs.UnitateMasura, Produs.Categorie
FROM Produs
WHERE Produs.Categorie="detergenti";

17. Să se șteargă toate comenzile emise într-un interval de timp specificat prin
parametri.
DELETE *
FROM Comanda
WHERE datacomanda BETWEEN [Data de inceput:] AND [Data de sfarsit:];
10. Să se șteargă toți clienții care nu au emis comenzi.
DELETE *
FROM CLIENT
WHERE Client.Codclient NOT IN (SELECT Comanda.Codclient
FROM Comanda);
18. Să se afișeze numărul total de comenzi emise de fiecare client, pe fiecare an în
parte.
TRANSFORM Count(Comanda.NrComanda) AS TotalComenzi
SELECT Client.CodClient, Client.DenumireClient
FROM Client INNER JOIN Comanda ON Client.CodClient = Comanda.CodClient
GROUP BY Client.CodClient, Client.DenumireClient
PIVOT Year(datacomanda);

4
19. Să se afișeze valoarea totala a comenzilor emise de fiecare client pe fiecare
trimestrual anului 2019 în parte.
TRANSFORM SUM(continutcomanda.pret*continutcomanda.cantitate) AS [valoare totala]
SELECT client.codclient, client.denumireclient
FROM client, comanda, continutcomanda
WHERE client.codclient=comanda.codclient AND comanda.nrcomanda=continutcomanda.
nrcomanda AND YEAR(comanda.datacomanda)=2019
GROUP BY client.codclient, client.denumireclient
PIVOT DATEPART('Q',comanda.datacomanda);

20. Să se afișeze prețul mediu înregistrat de fiecare produs comandat pe fiecare lună
a anului curent.
TRANSFORM AVG(continutcomanda.pret) AS [pret mediu]
SELECT produs.codprodus, produs.denumire
FROM Produs, Continutcomanda, Comanda
WHERE Produs.Codprodus=Continutcomanda.Codprodus AND
Comanda.nrcomanda=Continutcomanda.nrcomanda AND
Year(comanda.datacomanda)=Year(Date())
GROUP BY produs.codprodus, produs.denumire
PIVOT Month(comanda.datacomanda);

21. Sa se afişeze clienţii din Bucureşti si Braşov care nu au emis comenzi în anii
2019,2020.
SELECT Client.codclient, Client.denumireclient
FROM Client
WHERE (((Client.codclient) Not In (SELECT Comanda.Codclient
FROM Comanda
WHERE Year(comanda.datacomanda) IN (2019,2020)))
AND ((Client.orasclient) In ("Bucuresti","Brasov")));

22. Sa se afişeze clienții care au efectuat un număr total de comenzi în anul curent
mai mic decât numărul total de comenzi emise de client al cărui nume este
specificat ca parametru in timpul execuției.
SELECT client.codclient, client.denumireclient, COUNT(Comanda.nrcomanda) AS [total
comenzi]
FROM client INNER JOIN Comanda ON client.codclient=comanda.codclient
WHERE Year(comanda.datacomanda)=Year(date())
GROUP BY client.codclient, client.denumireclient
HAVING COUNT(comanda.nrcomanda)<(SELECT COUNT(comanda.nrcomanda)
FROM client INNER JOIN Comanda ON
client.codclient=comanda.codclient
WHERE client.denumireclient=[Introduceti
denumire]);

23. Sa se afişeze clienţii cu o valoare totala a comenzilor mai mare decât valoarea
totala a comenzilor emise în anul 2020.
SELECT client.codclient, client.denumireclient, SUM(continutcomanda.pret
*continutcomanda.cantitate) AS [Valoare totala]
FROM Client, comanda, continutcomanda

5
WHERE client.codclient=comanda.codclient AND
comanda.nrcomanda=continutcomanda.nrcomanda
GROUP BY client.codclient, client.denumireclient
HAVING SUM(continutcomanda.pret *continutcomanda.cantitate)>(SELECT
SUM(continutcomanda.pret *continutcomanda.cantitate)
FROM COMANDA,
Continutcomanda
WHERE
Comanda.nrcomanda=Continutcomanda.nrcomanda AND
Year(Comanda.datacomanda)=2020);
24. Sa se afişeze produsele care au înregistrat un preț maxim în comenzile din 2020
mai mic decât prețul mediu pe total produse din anul 2019.
SELECT Produs.Codprodus, Produs.Denumire, MAX(Continutcomanda.pret) AS [Pret
maxim]
FROM Produs, Comanda, Continutcomanda
WHERE Produs.Codprodus=Continutcomanda.Codprodus AND
Comanda.Nrcomanda=Continutcomanda.nrcomanda AND
Year(Comanda.datacomanda)=2020
GROUP BY Produs.Codprodus, Produs.Denumire
HAVING MAX(continutcomanda.pret)<(SELECT AVG(continutcomanda.pret)
FROM COMANDA,continutcomanda
WHERE Comanda.nrcomanda=
continutcomanda.nrcomanda AND Year(comanda.datacomanda)=2019);
25. Sa se șteargă din baza de date clienții care au o valoare totală a comenzilor în
ultimii 10 ani mai mică de 4000.
DELETE *
FROM client
WHERE client.codclient IN (SELECT comanda.codclient
FROM comanda,continutcomanda
WHERE comanda.nrcomanda=continutcomanda.
nrcomanda AND YEAR(comanda.datacomanda)>=YEAR(DATE())-10
GROUP BY comanda.codclient
HAVING SUM(continutcomanda.cantitate*
continutcomanda.pret)<4000);

26. Sa se afișeze anii in care valoarea medie a tuturor comenzilor a fost mai mică
decât valoarea totală înregistrata de clientul A SRL în anul 2019.
SELECT YEAR(comanda.datacomanda) AS ANUL, AVG(continutcomanda.pret*
continutcomanda.cantitate) AS [valoare medie]
FROM comanda, continutcomanda
WHERE comanda.nrcomanda=continutcomanda.nrcomanda
GROUP BY YEAR(comanda.datacomanda)
HAVING AVG(continutcomanda.pret*continutcomanda.cantitate)<(SELECT SUM
(continutcomanda.pret*continutcomanda.cantitate)
FROM client,comanda,continutcomanda
WHERE client.codclient=comanda.codclient AND
comanda.nrcomanda=continutcomanda.nrcomanda AND YEAR(comanda.datacomanda)=
2019 AND client.denumireclient="A SRL");

6
27. Sa se majoreze cu 25% prețul aferent comenzilor emise in trimestrul I al anului
2019.
UPDATE continutcomanda SET PRET = [PRET]*1.25
WHERE continutcomanda.nrcomanda IN (SELECT comanda.nrcomanda
FROM comanda
WHERE
DATEPART("Q",comanda.datacomanda)=1 AND YEAR(comanda.datacomanda)=2019);

28. Sa se șteargă din baza de date gestiunile care nu au emis niciun bon de consum în
2020.
DELETE *
FROM gestiune
WHERE gestiune.codgestiune not in (SELECT bonconsum.codgestiune
FROM bonconsum
WHERE year(bonconsum.databonconsum)=2020);

29. Sa se șteargă din baza de date chitanțele emise între 1 ianuarie 20015 și 1
ianuarie 2020.
DELETE *
FROM CHITANTA
WHERE chitanta.datachitanta between #1/01/2015# and #1/01/2020#;

30. Sa se afișeze o lista comună a emitenților documentelor și a numărului total de


documente emise de aceștia in ultimii 20 de ani, în formatul: Emitent, Număr
total de documente emise.
SELECT codgestiune AS emitent, count(nrbonconsum) as [numar total documente emise]
FROM bonconsum
WHERE year(databonconsum)>=year(date())-20
GROUP BY codgestiune
UNION SELECT comanda.codclient as emitent, count(chitanta.nrchitanta) as [numar total
documente emise]
FROM comanda inner join chitanta on comanda.nrcomanda=chitanta.nrcomnada
WHERE year(chitanta.datachitanta)>=year(date())-20
GROUP BY comanda.codclient;

S-ar putea să vă placă și