SQL Display Books выше средней цены, отображает среднюю цену всех книг. - PullRequest
0 голосов
/ 28 ноября 2018

Итак, у меня есть вопрос, касающийся подзапросов, мне нужно отобразить три вещи: книги, которые стоят выше средней цены книг, названия этих книг и столбец, отображающий среднюю цену ВСЕХ книг в базе данных.Я попробовал следующее, и это дало почти все, что мне нужно;Мне все еще нужно среднее из всех книг.Моя проблема со вторым фрагментом кода.

SELECT title_name, price 
FROM titles
WHERE price >(SELECT AVG(price) Average_Price FROM titles);

Второй фрагмент, где я попытался найти среднее значение всех книг ниже.

 SELECT AVG(price),title_name, price 
 FROM titles
 WHERE price >(SELECT AVG(price) Average_Price FROM titles);

Я думаю, что мне здесь не хватает чего-то довольно простого, просто не могуположи на это свой палецЯ хочу получить среднее значение для всех книг, поэтому я чувствую, что это должно быть частью первоначального утверждения, но когда я добавляю его сюда, оно вычисляется неправильно. Я считаю, что это вычисляет среднее значение для всех книг, которые выше среднего для всехкниги ... Если кто-нибудь может дать мне несколько советов, мне даже не обязательно нужен ответ, данный мне ... Просто указал в правильном направлении, возможно.О, может быть полезно отметить, что мы используем phpmyAdmin в качестве нашего рабочего пространства.Спасибо всем, кто выручил.=]

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Поместите подзапрос в предложение FROM!

SELECT t.title_name, t.price, a.Average_Price 
FROM titles t CROSS JOIN
     (SELECT AVG(price) as Average_Price FROM titles) a
WHERE t.price > a.Average_Price;

Таким образом, подзапрос оценивается только один раз , что может быть очень важным фактором при увеличении базы данных.

0 голосов
/ 28 ноября 2018

Попробуйте что-то вроде

SELECT (select avg(price) from titles) as AvgPrice ,title_name, price 
from titles 
where price > (select avg(price) average_price from titles)

Основная часть вашего выбора ограничена предложением where, поэтому ваш выбор получал среднюю цену всех названий, которые выше средней цены.Наличие вложенного выбора должно обойти это (хотя я работаю в основном с Oracle, я думаю, что это должно работать и с MySQL).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...