Aranjarea grupurilor agregate

ORDER BY poate fi utilizat și cu GROUP BY pentru a organiza grupuri. Dacă da, ORDER BY vine întotdeauna ultimul. Iată un exemplu din ultimul capitol prin adăugarea clauzei ORDER BY. Înainte de gruparea rezultatelor, ordinea grupurilor a fost arbitrară și acum facem ca grupurile să apară în ordine:

Selecteaza snum, odata, MAX (amt) FROM Comenzi GROUP BY snum, odata ORDER BY snum;

Ieșirea este prezentată în figura 7.6.

Deoarece nu am indicat creșterea sau scăderea ordinului, creșterea este folosită în mod implicit.

Aranjați rezultatul după numărul coloanei

În loc de nume de coloane, puteți utiliza numerele lor de secvență pentru a specifica câmpul utilizat pentru a ordona ieșirea. Aceste numere se referă nu la ordinea coloanelor din tabel, ci la ordinea lor în ieșire. Cu alte cuvinte, câmpul se face referire la primul SELECT, pentru ORDER BY - acest câmp este 1, indiferent de ce costă în ordine în tabel. De exemplu, puteți utiliza următoarea comandă pentru a afișa anumite câmpuri de masă Sellers, ordonate în ordine descrescătoare la cel mai scăzut Comisiei (de ieșire prezentată în figura 7.7):

SELECT-ul dorit, com FROM Salespeople GROUP BY 2 DESC;

Executarea jurnalului SQL ============ | (SELECT SNAME, comm | | DIN salespeople | | ORDER BY 2 DESC; | | ================================ ============= | | SNAME Comm | | -------- -------- | | Peel 0,17 | | Serres 0,13 | | Rifkin 0.15 | == ============================================= Figura 7.7: Organizeaza folosind număr

Unul dintre scopurile principale ale acestei caracteristici, ORDER BY - vă oferă posibilitatea de a utiliza GROUP BY cu coloane de afișare, precum coloanele din tabel. Coloanele a produs o funcție agregată, constantă sau de expresie în clauza SELECT a interogării, este absolut potrivit pentru utilizarea cu GROUP BY, în cazul în care se referă la ele cu ajutorul numerelor. De exemplu, să numărăm comenzile fiecăruia dintre vânzătorii noștri și să tipărim rezultatele în ordine descrescătoare, după cum se arată în Figura 7.8:

SELECT snum, COUNT (DISTINCT onum) FROM Comenzi GROUP BY snum ORDER BY 2 DESC;

=============== SQL Executie Log ============== | Selecteaza snum, odata, MAX (amt) | | | Din ordin | | GROUP BY snum | | ORDER CU 2 DESC; | | | | =============================================== | | | snum | | | ----- ---------- | | | 1001 3 | | | 1002 3 | | | 1007 2 | | | 1003 1 | | | 1004 1 | Figura ================================================= 7.8 Aranjament folosind coloana de ieșire.

În acest caz, trebuie să utilizați numărul coloanei, deoarece coloana de ieșire nu are un nume; și nu ar trebui să utilizați funcția agregată în sine. Strict vorbind, prin regulile ANSI SQL, următoarele nu vor funcționa, deși unele sisteme neglijează această cerință:

SELECT snum, COUNT (onum DISTINCT) din comenzi GROUP BY snum GROUP BY COUNT (onum DISTINCT) DESC;

Acest lucru va fi respins de majoritatea sistemelor!