В чем ошибка в запросе SQL (MAX и AVG)?
Здравствуйте, есть БД с двумя таблицами из нее надо вытащить таблицу с указанием производителя с максимальной средней стоимостью телефонов
запрос к ней " SELECT companyName, MAX(PriceAvg) FROM (SELECT `companyId`, AVG(`price`) AS PriceAvg FROM phone GROUP BY `companyId`) AS reporttable INNER JOIN company ON reporttable.companyId=company.companyId " дает неправильный ррезультат, а именно неправильно указывает производителя телефонов, при этом без INNER JOIN работает правильно, указывая Id производителя и максимальную среднюю цену телефонов. Но нужно вывести название производителя в таблице, а не его Id. Файл базы https://disk.yandex.ru/d/lQnRbz4WqZKDHQ
Дополнительно:
Вам нужно использовать следующий запрос:
SELECT companyName, PriceAvg FROM ( SELECT `companyId`, AVG(`price`) AS PriceAvg FROM phone GROUP BY `companyId` ) AS reporttable INNER JOIN company ON reporttable.companyId = company.companyId ORDER BY PriceAvg DESC LIMIT 1; |
SELECT companyName, PriceAvg FROM ( SELECT `companyId`, AVG(`price`) AS PriceAvg FROM phone GROUP BY `companyId` ) AS reporttable INNER JOIN company ON reporttable.companyId = company.companyId ORDER BY PriceAvg DESC LIMIT 1;
Проверить SQL online
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для начала давайте рассмотрим общий синтаксис запроса SQL с использованием функций MAX и AVG.
Функция MAX используется для нахождения максимального значения в столбце, а функция AVG - для вычисления среднего значения. Обе функции могут быть использованы в SELECT запросе для анализа данных в таблице.
Вот пример запроса, в котором используются функции MAX и AVG:
SELECT MAX(column_name) AS max_value, AVG(column_name) AS avg_value FROM table_name;
Теперь давайте рассмотрим возможные ошибки, которые могут возникнуть в запросе SQL с использованием MAX и AVG.
1. Ошибка в названии столбца:
Если вы указали неверное имя столбца в функции MAX или AVG, то запрос вернет ошибку. Убедитесь, что вы правильно указали имя столбца в запросе.
2. Ошибка в синтаксисе запроса:
Если вы ошиблись в синтаксисе запроса, например забыли поставить точку с запятой в конце запроса, то база данных не сможет выполнить запрос.
3. Отсутствие необходимых прав доступа:
Если у вас нет необходимых прав доступа к таблице, в которой вы пытаетесь выполнить запрос, то база данных вернет ошибку доступа.
4. Некорректное использование функций:
Убедитесь, что вы используете функции MAX и AVG правильно. Например, функция AVG требует числового столбца для вычисления среднего значения, поэтому убедитесь, что вы передаете числовой столбец в функцию AVG.
Если вы продолжаете столкнуться с ошибками при использовании функций MAX и AVG в запросе SQL, попробуйте выполнить запрос по шагам, проверяя каждую часть запроса на правильность. Также обратитесь к документации вашей базы данных для получения дополнительной информации о правильном использовании этих функций.