aakar Ответов: 2

Предложение Order by нарушает группировку в запросе.


I have a table that looks like this :


Region   Country   Earnings

Americas    Canada   10000

Americas    Mexico    20000

Americas    USA     50000

Asia-Pac   China    70000

Asia-Pac   Japan    40000

  

I need a report that groups the results based on the Region and then the Country as well as orders by the Earnings within the Region in a descending manner. I am using the below query : 


Select Region, Country, SUM(Earnings) from MyTable

Group By Region, Country

Order By SUM(Earnings) DESC


However, the result set that I get looks like the below :


Region   Country   Earnings

Asia-Pac   China    70000

Americas    USA    50000

Asia-Pac   Japan    40000

Americas    Mexico    20000

Americas    Canada   10000


i.e. I get the result set ordered by Earnings in a descending manner but the grouping gets disturbed.

Any ideas?


Что я уже пробовал:

Я попробовал написать запрос сам & его, как показано ниже :

Выберите регион, страну, сумму (доход) из MyTable

Группа По Регионам, Странам

Заказ по сумме (доходу) DESC

0x01AA

Ваш запрос делает именно то, что должен. Вы Группируетесь По Регион _и_ Страна а в таблице, которую вы показываете, на данный момент есть только записи разных групп ... добавьте, например, еще одну строку для "Americas, Canada" с заработком 70 000 долларов, и вы увидите, что все правильно.

phil.o

Поскольку у вас есть только одна страна для каждого региона, результат, который вы получаете, является правильным. Вы можете попытаться добавить еще несколько дубликатов регионов/стран с разными доходами, чтобы получить более значимый результат.

0x01AA

Я думаю, вы имеете в виду "для каждого региона" :)

phil.o

Ой :)
Теперь исправлено. Спасибо,что указал.

2 Ответов

Рейтинг:
1

Patrice T

Цитата:
то есть я получаю результирующий набор, упорядоченный по доходам в порядке убывания, но группировка нарушается.
Есть идеи?
Конечно, это то, о чем вы просили !

Посмотреть использование "группы" и "Сортировать по"
SQL ORDER BY Keyword[^]


Рейтинг:
1

OriginalGriff

Попробуй:

... ORDER BY Region ASC, SUM(Earnings) DESC


aakar

Спасибо всем за ваши предложения! Однако отчет, который мне нужен, должен выглядеть так :

Заработок Страну Проживания

Америка США 50000

Америка Мексика 20000

Америка Канада 10000

Азиатско-Тихоокеанского Китай 70000

Азиатско-Тихоокеанского Японии 40000

OriginalGriff

И это то, что делают два предложения ORDER BY...