Как сохранить только 1 результат в алфавитном порядке в ie с SQL запросами? - PullRequest
0 голосов
/ 30 января 2020

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

Схема таблицы:

Country table:
country_name
city_name

Goods table:
city_name
user_id
number_of_goods

Результат моих запросов:

France            Paris        85
Germany           Berlin       100
Germany           Frankfurt    100
Germany           Luxembourg   100
Netherlands       Amsterdam    75
Spain             Barcelona    93

Правильный результат должен быть:

France            Paris        85
Germany           Berlin       100
Netherlands       Amsterdam    75
Spain             Barcelona    93

Ответы [ 3 ]

1 голос
/ 30 января 2020

используйте функции агрегирования min() для города и max() для no_of_goods.

select t1.country, t1.no_of_goods, min(t2.city) as city 
from
(select country,  max(no_of_goods) as no_of_goods from tableA
group by country) t1
left join tableA t2 on t2.no_of_goods = t1.no_of_goods and t1.country = t2.country
group by t1.country, t1.no_of_goods

см. dbfiddle .

1 голос
/ 30 января 2020

Вы можете использовать row_number():

select t.*
from (select t.*, row_number() over (partition by country order by city) as seq,
             max(no_goods) over (partition by country) as max_good
      from table t
     ) t
where seq = 1;
0 голосов
/ 30 января 2020

В основном, есть города с одинаковым количеством товаров, но мы оставляем первый только в алфавитном порядке.

Судя по вашим выборочным данным, все городов в стране, похоже, имеют одинаковые number_of_goods. Если это так, вы можете просто использовать агрегацию:

select c.country, min(c.city_name), max(number_of_goods)
from countries c join
     goods g
     on c.city_name = g.city_name
group by c.country;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...