УПОРЯДОЧЕНИЕ ВЫВОДА ПО НОМЕРУ СТОЛБЦА
Вместо имен столбца, вы можете использовать их порядковые номера для указания поля используемого в упорядочении
вывода. Эти номера могут ссылаться не на порядок столбцов в таблице, а на их порядок в выводе. Другими словами,
поле упомянутое в предложении SELECT первым, для ORDER BY - это поле 1, независимо от того каким по порядку
оно стоит в таблице. Например, вы можете использовать следующую команду чтобы увидеть определенные поля таблицы
Продавцов, упорядоченными в порядке убывания к наименьшему значению комиссионных ( вывод показывается Рисунке 7.7 ):
SELECT sname, comm FROM Salespeople GROUP BY 2 DESC;
sname |
comm |
Peel |
0.17 |
Serres |
0.13 |
Rifkin |
0.15 |
Pисунок 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;
snum |
|
1001 |
3 |
1002 |
3 |
1007 |
2 |
1003 |
1 |
1004 |
1 |
Упорядочение с помощью столбца вывода В этом случае, вы должны использовать номер столбца, так как столбец
вывода не имеет имени; и вы не должны использовать саму агрегатную функцию. Строго говоря по правилам ANSI
SQL, следующее не будет работать, хотя некоторые системы и пренебрегают этим требованием:
SELECT snum,
COUNT ( DISTINCT onum ) FROM Orders GROUP BY snum GROUP BY COUNTОМ ( DISTINCT onum ) DESC;
Это будет
отклонено большинством систем!