我需要找到与S1,S2等相关的供应商编号(SNo)的所有记录的平均数量(数量)。即使至少只有一条记录满足条件
此查询仅选择一个记录和查询平均值之前的查询条件
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之间。因此,应该拒绝它。
您需要检查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
请参见demo。结果:
> Sno | avg_qty
> :-- | ------:
> S1 | 50
> S3 | 83
> S4 | 40