|
Программирование >> Понятие sql
SQL Execution Log SELECT * FROM Orders ORDER BY cnum DESC;
Рисунок 7.4: Упорядочение вывода с помощью убывания поля УПОРЯДОЧЕНИЕ С ПОМОЩЬЮ МНОГОЧИСЛЕНЫХ СТОЛБЦОВ Мы можем также упорядочивать таблицу с помощью другого столбца, например с помощью поля amt, внутри упорядочения поля cnum. (вывод показан в Рисунке 7.5): SELECT * FROM Orders ORDER BY cnum DESC, amt DESC; SQL Execution Log SELECT * FROM Orders ORDER BY cnum DESC, amt DESC;
Рисунок 7.5: Упорядочение вывода с помощью многочисленых полей Вы можете использовать ORDER BY таким же способом сразу с любым числом столбцов. Обратите внимание что, во всех случаях, столбцы которые упорядочиваются должны быть указаны в выборе SELECT. Это - требование ANSI которые в большинстве, но не всегда, предписано системе. Следующая команда, например, будет запрещена: SELECT cname, city FROM Customers GROUP BY cnum; Так как поле cnum не было выбранным полем, GROUP BY не cможет найти его чтобы использовать для упорядочения вывода. Даже если ваша система позволяет это, смысл упорядочения не будет понятен из вывода, так что включение (в предложение SELECT) всех столбцов, используемых в предложении ORDER BY, впринципе желательно. УПОРЯДОЧЕНИЕ АГРЕГА ТНЫХ ГРУПП ORDER BY может кроме того, использоваться с GROUP BY для упорядочения групп. Если это так, то ORDER BY всегда приходит последним. Вот - пример из последней главы с добавлением предложения ORDER BY. Перед сгруппированием вывода, порядок групп был произвольным, имы, теперь, заставим группы размещаться в последовательности: SELECT snum, odate, MAX (amt) FROM Orders GROUP BY snum, odate GROUP BY snum; Вывод показывается в Рисунке 7.6. SQL Execution Log SELECT snum, odate, MAX (amt) FROM Orders GROUP BY snum, odate ORDER BY snum ;
Рисунок 7.6: Упорядочение с помощью группы Так как мы не указывали на возрастание или убывание порядка, возрастание используется по умолчанию. УПОРЯДОЧЕНИЕ ВЫВОДА ПО НОМЕРУ СТОЛБЦА Вместо имен столбца, вы можете использовать их порядковые номера для указания поля используемого в упорядочении вывода. Эти номера могут ссылаться не на порядок столбцов в таблице, анаихпорядокввыводе. Другими словами, поле упомянутое в предложении 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; Это будет отклонено большинством систем! УПОРЯДОЧЕНИЕ С ПОМОЩЬЮ ОПЕРАТОРА NULL Если имеются пустые значения (NULL) в поле которое вы используете для упорядочивания вашего вывода, они могутут или следовать или предшествовать каждому
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |