#mysql #sql
Вопрос:
У меня есть таблица под названием «Детали«.
------------------- --------------- ------------------- --------------- -------------------
| pcode varchar(10) | weight int | color varchar(10) | cost int | sellingprice int |
------------------- --------------- ------------------- --------------- -------------------
| '1' | 10 | 'Pink' | 100 | 150 |
| '2' | 20 | 'White' | 200 | 250 |
| '3' | 30 | 'Green' | 300 | 350 |
| '4' | 40 | 'Blue' | 400 | 450 |
| '5' | 50 | 'Red' | 500 | 550 |
------------------- --------------- ------------------- --------------- -------------------
Мне нужно найти код pcode из этой таблицы для детали, стоимость которой > средняя стоимость.*
Я попробовал это:
select pcode
from Part
where cost > avg(cost)
between 100 and 500;
Комментарии:
1. Учитывая ваше заявление, почему у вас есть
between
в SQL ?2. ну, удаление его ничего не изменит, я подумал, что предоставление ему диапазона может что — то изменить.
3. @GordonLinoff спасибо, чувак, я сдался, но потом я сделал последнюю попытку, простую попытку, это сработало, мне как будто один день, чтобы sql. Я просто пытаюсь выполнить свое задание, чтобы подготовиться к экзаменам…
Ответ №1:
Попробовал расширить еще, и это сработало.
Средняя стоимость столбца будет равна —
(select avg(cost)
from Part)
Как того требует вопрос, мне нужно найти пакеты со стоимостью, превышающей среднюю по столбцу.
который можно получить, просто поместив среднее значение вместе с оператором.
select pcode
from Part
where cost > (select avg(cost) from Part)
Комментарии:
1. Пожалуйста, укажите дополнительную информацию в своем ответе. Как это написано в настоящее время, трудно понять ваше решение.