Возникли проблемы при сортировке результатов SQL-запросов с помощью функций Упорядочить по и Группировать по с агрегированными полями - PullRequest
0 голосов
/ 23 июня 2018

У меня возникли некоторые проблемы с результатами следующего запроса.

Мое намерение состоит в том, чтобы отобразить результаты всех платежей, полученных хостами, отсортированные в порядке убывания на основе агрегированного столбца (с псевдонимом «Общая сумма полученных ($)»)

Select   H.host_name AS 'Host Name', 
         H.location AS 'District', 
         AVG(F.host_feedback_rating) AS 'Average Rating',
         SUM(P.payment_amount) AS 'Total Amount Received ($)'

FROM booking B, host H, payments P, feedback F 
WHERE H.host_id = P.host_id
AND F.booking_code = B.booking_code
AND F.host_id = H.host_id
AND P.payment_date  between '2018/01/01' and '2018/12/31'

GROUP BY 1,2
ORDER BY 'Total Amount Received ($)' DESC;

Текущие результаты:

Host Name   District    Average Rating  Total Amount Received ($)
John         Detroit              5                275
Leeroy       Chicago              5                50
Rinoa        Texas                5                225
Sally        California           4                45

Я пытался откорректировать предложения GROUP BY, но каким-то образом Общая полученная сумма ($) не сортируется правильно ... Не могли бы вы подсказать мне об этом?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 23 июня 2018

попробуйте с помощью backtick как

...ORDER BY `Total Amount Received ($)` DESC

ИЛИ

...Order By 4 DESC

или

...SUM(P.payment_amount) DESC

Спасибо:)

0 голосов
/ 23 июня 2018

'Total Amount Received ($)' заключено в одинарные кавычки (') и, таким образом, является константным строковым литералом.Хотя сортировка в соответствии с этим не является технически неправильной (как вы могли видеть - у вас нет ошибки), она не имеет смысла, поскольку все строки будут иметь одинаковое значение константы.

Самый простой подход, ИМХО,будет сортировать по индексу столбца вместо его псевдонима:

ORDER BY 4 DESC
...