Как мне получить правильное внутреннее соединение и sub- sql? - PullRequest
1 голос
/ 09 февраля 2020

Вот вопрос:

Какие девять округов продают наибольшее количество бутылок ликера на душу населения (на человека)? Рассчитайте средний bottle размер бутылок ликера, проданных этими округами, округленный до ближайшего первого десятичного знака. Из девяти округов, продающих наибольшее количество бутылок ликера на душу населения, в котором округ (в среднем) продает самый большой bottle размер?

Вот таблицы: enter image description here

Вот коды, которые у меня есть:

sql = """
Select s.county, (s.bottle_qty/c.population) As sale_per_cap, lar_bott_sz = (Select p.bottle_size
                   From products As p
                   Where s.item = p.item_no)
From sales As s, counties As c
Inner Join counties On c.county = s.county
Group By c.county
Order By sale_per_cap
Limit 10
"""

Я новичок в SQL. Пожалуйста, помогите мне с этим. Большое спасибо !!!

1 Ответ

0 голосов
/ 09 февраля 2020

Я думаю, что вам нужны объединения и агрегирование:

select 
    c.county,
    sum(s.bottle_quantity) / c.population bottles_per_person,
    avg(p.bottle_size) avg_bottle_size
from counties c
inner join sales s on s.county = c.county
inner join products p on p.item_no = s.item
group by c.county, c.population
order by bottles_per_person desc
limit 9

Запрос объединяет таблицы counties, sales и products, а затем агрегирует по county. Соотношение количества бутылок на человека рассчитывается путем деления суммы продаж bottle_quantity на население округа; мы используем его, чтобы упорядочить результаты ограничить количество результатов.

...