Вместо имен столбца, вы можете использовать их порядковые номера для указания поля, используемого в упорядочении вывода. Эти номера могут ссылаться не на порядок столбцов в таблице, а на их порядок в выводе. Другими словами, поле упомянутое в предложении SELECT первым, для ORDER BY — это поле 1, независимо от того каким по порядку оно стоит в таблице. Например, вы можете использовать следующую команду чтобы увидеть определенные поля таблицы Продавцов, упорядоченными в порядке убывани к наименьшему значению комиссионных ( вывод показывается Рисунке 7.7 ):
SELECT sname, comm FROM Salespeople GROUP BY 2 DESC;
SQL Execution Log
(SELECT sname, comm FROM Salespeople ORDER BY 2 DESC;
sname
comm
Peel
0.17
Serres
0.13
Rifkin
0.15
Рисунок 7. 7: Упорядочение исполяьзующее номера Одна из основных целей этой возможности ORDER BY — дать вам возможность использовать GROUP BY со столбцами вывода также как и со столбцами таблицы. Столбцы производимые агрегатной функцией, константы, или выражения в предложении SELECT запроса, абсолютно пригодны для исполяьзования с GROUP BY, если они ссылаются к ним с помощью номера. Например, давайте сосчитаем порядки каждого из наших продавцов, и выведем результаты в убывающем порядке, как показано в Рисунке 7.8:
SELECT snum, COUNT ( DISTINCT onum ) FROM Orders GROUP BY snum ORDER BY 2 DESC;
SQL Execution Log
SELECT snum, odate, MAX (amt)
FROM Orders
GROUP BY snum
ORDER BY 2 DESC;
snum
1001
3
1002
3
1007
2
1003
1
1004
1
Рисунок 7.8: Упорядочение с помощью столбца вывода
В этом случае, вы должны использовать номер столбца, так как столбец вывода не имеет имени; и вы не должны использовать саму агрегатную функцию. Строго говоря по правилам ANSI SQL, следующее не будет работать, хотя некоторые системы и пренебрегают этим требованием:
SELECT snum, COUNT ( DISTINCT onum ) FROM Orders GROUP BY snum GROUP BY COUNT ОМ ( DISTINCT onum ) DESC;
Это будет отклонено большинством систем!
‹ Упорядочение агрегатных групп
Вверх
Упорядочение с помощью многочисленных столбцов ›