Cum funcționează
Structura de bază e la tabelul Carti, iar formatul datelor e
explicat la tabelul Elevi. Aici apar comparațiile pe date şi
calculul procentual.
c) Compararea datelor calendaristice
„Produse în 2009 sau mai recent" înseamnă toate datele de la 1 ianuarie 2009 încolo:
WHERE Data_fabr >= '2009-01-01'
Datele se compară cu <, >, >=, <=, exact ca numerele — o dată mai târzie e „mai mare".
Formatul AAAA-LL-ZZ face ca această comparație să funcționeze corect.
Rezultat: Mazda 3 (2009), Opel Vectra (2011), BMW seria 3 (2010), Skoda Octavia (2009).
Alternativă: unele baze de date au funcții de extragere a anului, precum YEAR(Data_fabr) >= 2009 (Access) sau strftime('%Y', Data_fabr). Comparația directă cu '2009-01-01' merge peste
tot şi e mai sigură la examen.
Pentru un interval, foloseşti BETWEEN:
WHERE Data_fabr BETWEEN '2009-01-01' AND '2009-12-31'.
d) Modificarea procentuală
Cheia e că, în UPDATE, partea dreaptă a lui SET poate fi un calcul care foloseşte valoarea
curentă a coloanei:
SET Pret = Pret * 0.93
Se citeşte: noul preţ = preţul actual, înmulţit cu 0.93. Fiecare rând se calculează separat, cu
propria valoare.
Transformarea procentului în factor de înmulţire:
| Cerinţa |
Factor |
De ce |
| scade cu 7% |
* 0.93 |
rămâne 93% din valoare |
| scade cu 10% |
* 0.9 |
rămâne 90% |
| creşte cu 15% |
* 1.15 |
100% + 15% |
| creşte cu 5% |
* 1.05 |
|
Regula: scădere cu p% → înmulţeşti cu 1 - p/100; creştere cu p% → cu 1 + p/100.
Forma echivalentă SET Pret = Pret - Pret * 0.07 dă acelaşi rezultat, dar e mai lungă şi mai uşor
de greşit.
Se modifică doar BMW seria 3 (1500 → 1395) şi BMW seria 3 (3500 → 3255), singurele cu
Verif_tehn = 'N'.
Greșeli frecvente
SET Pret = 0.93 — toate maşinile primesc preţul 0.93, în loc să fie reduse. Se uită că
trebuie pornit de la valoarea curentă.
SET Pret = Pret * 0.07 — rămâne 7% din preţ, adică o reducere de 93%.
- Confuzia dintre scădere şi creştere —
* 1.07 măreşte preţul în loc să-l scadă.
WHERE Data_fabr >= 2009 — se compară o dată cu un număr; rezultatul e imprevizibil.
UPDATE fără WHERE — se reduc toate preţurile.
Verif_tehn = N fără apostrofuri.