Объединение двух таблиц, сортировка и поиск значений Top Top - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь создать запрос для трех лучших магазинов, у которых самый высокий средний доход и тип розничной торговли - это мода и обувь. Я должен объединить 3 стола, где я должен соединить 2 к 1-му. Что-то не так с синтаксисом ниже:

Select * from (Select
  a.shop_id,
  c.retail_type,
  avg(b.revenue_amount) as avg_revenue_amount
From
  shops a
  Left join rev b on a.shop_id = b.shop_id
  Left join trans c on b.trans_id = c.trans_id
Where
  c.retail_type in (‘fashion’, ‘ shoes ’)
Group by
  1,
  2
Order by
  avg_revenue_amount desc)
limit 10;

Ответы [ 2 ]

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

Я бы порекомендовал написать запрос следующим образом:

select s.shop_id, t.retail_type,
       avg(r.revenue_amount) as avg_revenue_amount
from shops s join
      rev r
      on s.shop_id = r.shop_id join
      trans 
      t
      on r.trans_id = t.trans_id
where t.retail_type in ('fashion', 'shoes')
group by s.shop_id, t.retail_type
order by avg_revenue_amount desc
limit 10;

Вы не указали свою базу данных, но следующее потенциально проблематично c:

  • Неверные кавычки в in предложение.
  • Отсутствие псевдонима после производной таблицы.
  • Использование числительных c заполнителей в GROUP BY.

Не все это обязательно ошибки, но они могут зависеть от вашей базы данных.

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

  • Пробелы вокруг строки для IN сравнение означает, что сравнение может не работать.
  • Использование произвольных букв для псевдонимов таблиц делает запрос действительно сложным.
  • Предложение WHERE превращает LEFT JOIN s во внутренний присоединяется, поэтому LEFT JOIN s вводит в заблуждение.
  • Подзапрос излишен.
1 голос
/ 24 января 2020

У вас есть дополнительная скобка в строке:

avg_revenue_amount) des c)

Также у вас есть опечатка во второй строке: a.shop.id -> a.shop_id и другая проблема с кавычками: ‘fashion’, ‘ shoes ’ -> 'fashion', 'shoes'

Проверить отредактированный запрос на SQL Fiddle .

...