Мне нужно найти среднее значение всех записей (кол-во), которые связаны с номерами поставщиков (SNo), если есть хотя бы одна запись - PullRequest
1 голос
/ 21 апреля 2020

Мне нужно найти среднее значение всех записей (кол-во), которые связывают номера поставщиков (SNo) как S1, S2 ..et c. даже если есть хотя бы одна запись для выполнения условия

, этот запрос выбирает только одну запись и условие проверки запроса до получения среднего

select Sno, avg(qty) avg_qty                                              
from Supplier                                                       
group by  sno                             
having  avg(qty) > 50 and avg(qty) < 100

это моя таблица:

create table Supplier
(
SNo Varchar (5),
PNo Varchar (5),
JNo Varchar (5),
Qty int
)
Insert into Supplier values ('S1','P1','J1',50)
Insert into Supplier values ('S1','P1','J2',90)
Insert into Supplier values ('S1','P2','J1',40)
Insert into Supplier values ('S1','P3','J3',20)
Insert into Supplier values ('S2','P1','J3',110)
Insert into Supplier values ('S2','P2','J2',30)
Insert into Supplier values ('S2','P4','J3',10)
Insert into Supplier values ('S3','P3','J1',100)
Insert into Supplier values ('S3','P1','J3',80)
Insert into Supplier values ('S3','P4','J2',70)
Insert into Supplier values ('S4','P2','J1',60)
Insert into Supplier values ('S4','P1','J3',20)

Мне нужно выбрать среднее кол-во из таблицы, которое больше 50 и меньше 100. Но мой запрос выбирает только запись. Но мне нужно принять результат как:

S1 - 50 
S3 - 83 
S4 - 40 

Таким образом, у S2 нет количества между 50 и 100. Вот почему его следует отклонить.

1 Ответ

1 голос
/ 21 апреля 2020

Вам необходимо проверить в предложении HAVING, существует ли строка для этого Поставщика, которая удовлетворяет условию:

select Sno, avg(qty) avg_qty                                              
from Supplier
group by  sno
having count(case when qty > 50 and qty < 100 then 1 end) > 0

См. Демонстрационную версию . Результаты:

> Sno | avg_qty
> :-- | ------:
> S1  |      50
> S3  |      83
> S4  |      40
...