Получить отсортированные данные на основе одного числового столбца в SQLITE

У меня есть таблица, похожая на прикрепленное изображение в базе данных SQLITE.

Sqlite-таблица

Я пытаюсь получить отсортированные данные на основе столбца SUM (фрахт). Для этого я использовал приведенный ниже запрос.

ВЫБЕРИТЕ ShipCountry ИЗ CountryDetails СГРУППИРОВАТЬ ПО ShipCountry ПОРЯДОК ПО СУММЕ (фрахт) ASC
Когда я запускаю это, я получаю результат, как показано ниже.

Результат Sqlite

Если я запускаю приведенный ниже запрос, я получаю результат, как показано ниже. Все хорошо.

ВЫБЕРИТЕ ShipCountry, ShipCity FROM CountryDetails СГРУППИРОВАТЬ ПО СУММЕ(Freight), ShipCity ORDER BY SUM(Freight), ShipCity ASC

Результат

Вместо этого мне нужен результат, как показано ниже. В заказе по предложению SUM(Freight) следует учитывать только ShipCountry. Он не должен учитывать одновременно ShipCountry и ShipCity. Мой ожидаемый результат

Результат таблицы

Как добиться этого результата с помощью запроса SQLITE?

в SQL мы можем выполнить запрос, как показано ниже.

Выберите ShipCountry, ShipCity из группы Countrydetails по ShipCountry, ShipCity Order по SUM(SUM(freight)) over(partition by ShipCountry), Shipcity Asc.

Нам нужен аналогичный запрос в Sqlite.


person Umapathy S    schedule 17.08.2017    source источник
comment
Сиэтл в Польше?   -  person el.pescado    schedule 17.08.2017


Ответы (1)


Используйте подзапрос, чтобы найти сумму фрахта для каждой страны, а затем закажите, используя только эту сумму на уровне страны:

SELECT
    cd1.ShipCountry,
    cd1.ShipCity
FROM Countrydetails cd1
INNER JOIN
(
    SELECT ShipCountry, SUM(freight) AS freight_sum
    FROM Countrydetails
    GROUP BY ShipCountry
) cd2
    ON cd1.ShipCountry = cd2.ShipCountry
ORDER BY
    cd1.freight_sum,
    cd1.ShipCountry,    -- needed in case two countries happen to have the same sum
    cd1.ShipCity

Мы могли бы добавить еще один уровень сортировки для frieght каждого города, чтобы упорядочить в пределах данной страны. Но ваш ожидаемый результат не означает, что вы этого хотите.

person Tim Biegeleisen    schedule 17.08.2017
comment
Спасибо. после внесения незначительных изменений в пункт Order by он отлично работает. ЗАКАЗАТЬ По cd2.freight_sum cd1.ShipCountry cd1.ShipCity - person Umapathy S; 17.08.2017