Gruparea
Vom oferi clauza GROUP BY în combinație cu clauza HAVING într-un capitol ulterior.
Sortarea
SGBD este liber să livreze rândurile rezultate într-o ordine arbitrară. Rândurile pot fi returnate în ordinea cheii primare, în ordinea cronologică în care sunt stocate în baza de date, în ordinea unei chei interne organizate în arbore B sau chiar în ordine aleatorie. În ceea ce privește secvența rândurilor livrate, SGBD poate face ceea ce dorește. Nu te aștepta la nimic.
Dacă vrem o anumită ordine de rânduri, trebuie să ne exprimăm dorințele în mod explicit. Putem face acest lucru în clauza ORDER BY. Acolo specificăm o listă de nume de coloane în combinație cu o opțiune de sortare ascendentă sau descendentă.
-- toate persoanele în ordine crescătoare (care este implicită) a greutății lor
SELECT *
FROM person
ORDER BY weight;
-- toate persoanele în ordinea descrescătoare a greutății lor
SELECT *
FROM person
ORDER BY weight desc;
În rezultatul de mai sus, există două rânduri cu valori identice în coloana weight. Deoarece această situație duce la rezultate aleatorii, avem posibilitatea de a specifica mai multe coloane. Următoarele coloane sunt procesate numai pentru acele rânduri cu valori identice în toate coloanele anterioare.
-- Toate persoanele în ordinea descrescătoare a greutății lor. În cazuri ambigue, ordonați
-- crescător coloana suplimentară loc_de_naștere: Birmingham înainte de San Francisco
SELECT *
FROM person
ORDER BY weight desc, place_of_birth;
În clauza ORDER BY, putem specifica orice coloană a tabelului procesat. Nu ne limităm la cele care sunt returnate de proiecție.
-- aceeași ordonare ca mai sus
SELECT firstname, lastname
FROM person
ORDER BY weight desc, place_of_birth;
Combinarea elementelor limbajului
Sunt obligatorii doar primele două elemente ale comenzii SELECT: partea de până la numele primului tabel (sau vizualizare). Toate celelalte sunt opționale. Daca le specificam si pe cele optionale, trebuie tinuta cont de succesiunea lor predeterminată. Dar sunt combinabile în funcție de nevoile noastre.
-- Am văzut pe această pagină: SELECT / FROM / WHERE / ORDER BY
SELECT p.lastname,
p.weight,
p.weight * 100 / (SELECT avg(p2.weight) FROM person p2) AS percentage_of_average
FROM person p
WHERE p.weight BETWEEN 70 AND 90
ORDER BY p.weight desc, p.place_of_birth;
(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)
Lasă un răspuns