2015-12-10 4 views
1

У меня есть база данных, состоящая из множества таблиц, 3 представляющих интерес таблиц: ThemeParks, Tickets и TicketPrices.Среднее значение SQL для сумм?

я в настоящее время есть запрос, который отображает общий объем продаж билетов для каждой страны:

SELECT SUM(TicketPrices.price) 
FROM TicketPrices, Tickets, ThemeParks 
WHERE Tickets.TP_Code = ThemeParks.TP_Code 
GROUP BY ThemeParks.TP_country 

Результат запроса:

SUM(TicketPrices.price) 
----------------------- 
700 
300 
300 
600 

Я хотел бы сделать запрос, который просто отображает среднее значение всех этих значений. Как я могу это сделать?

ответ

1

Просто обернуть его в другой запрос:

SELECT AVG(price_sum) 
    FROM (SELECT SUM(TicketPrices.price) as price_sum 
      FROM TicketPrices, Tickets, ThemeParks 
     WHERE Tickets.TP_Code = ThemeParks.TP_Code 
     GROUP BY ThemeParks.TP_country) t 

Кроме того, рассмотреть вопрос о переходе к ANSI синтаксис объединения.

+0

Большое спасибо за ваш ответ! Я нашел это очень полезным! Как вы, наверное, знаете, я здесь новый, и это мой первый вопрос, и поэтому я не понял, как отправлять код в формате кода. – HJGBAUM

+0

Добро пожаловать в SO. Посмотрите здесь, чтобы узнать, как отформатировать ваши сообщения: http://stackoverflow.com/help/formatting. – sstan

1

Средняя сумма, деленная на счет. Итак:

SELECT SUM(tp.price)/COUNT(DISTINCT tp.TP_COUNTRY) 
FROM TicketPrices tp JOIN 
    Tickets t 
    ON ??? JOIN 
    ThemeParks tp 
    ON t.TP_Code = tp.TP_Code; 

Проблема с запросом, однако, является недостающим ON положение. Вы должны научиться использовать явный синтаксис JOIN. Это поможет вам написать правильные запросы в будущем. Простое правило: Никогда запятые запятые в разделе FROM. Всегда использовать явно JOIN синтаксис.

Смежные вопросы