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;
Это будет отклонено большинством систем!
Do'stlaringiz bilan baham: |