2015-12-07 5 views
-1

Я пытаюсь использовать функции MIN, MAX и AVG в наборе данных, чтобы он отображал название книги из одной таблицы, «книгу», а затем вычисляет минимальный, максимальный и средний рейтинг (по шкале от 1 до 10) для каждого заглавия. Мои таблицы выглядит следующим образом:SQL MIN(), MAX() и AVG

Книга

ISBN | Title 
12345 | Title1 
45678 | Title2 

и Краткая аннотация

ISBN | Rating 
12345 | 4 
45678 | 7 
12345 | 9 

, и я хочу, чтобы выход выглядеть следующим образом:

Title | Min Rating | Max Rating | Average Rating 

У меня есть T с помощью MIN(), MAX() и AVG() и объединения двух таблиц с INNER JOIN на ISBN, но мне не удалась распечатать их все вместе. Теперь у меня есть самый низкий рейтинг для всех книг (он печатает 4 для каждой книги), когда я хочу, чтобы он печатал самый низкий рейтинг для каждого конкретного названия. Любая помощь будет принята с благодарностью. Спасибо!

+1

Вы не заладилась. Это должна быть проблема. –

+0

Вы используете любую 'GROUP BY'? –

ответ

1

Вы должны присоединиться таблицы, выберите столбцы и группы по названию:

SELECT TITLE, MIN(RATING), MAX(RATING), AVG(RATING) 
FROM  BOOK B 
JOIN  BOOK REVIEW BR ON BR.ISBN = B.ISBN 
GROUP BY TITLE 
1
select b.Title, min(br.rating) as `Min Rating`, 
    max(br.rating) as `Max Rating`, avg(br.rating) as `Average Rating` 
from book b 
inner join bookreview br on br.isbn = b.isbn 
group by title 
Смежные вопросы