Как узнать кортеж, значение атрибута которого превышает среднее значение по всем атрибутам, с помощью оператора и функции AVG()?

#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. Пожалуйста, укажите дополнительную информацию в своем ответе. Как это написано в настоящее время, трудно понять ваше решение.