0
votes

Syntaxe incorrecte près du mot-clé «où». Je ne comprends pas cette erreur

select SNo 
from Supplier  
Having AVG(Qty) IN (
    Select SNo, AVG(Qty)AS Average 
    from Supplier 
    Group By SNo 
)
where (Qty) >50 AND (Qty) <100;

2 commentaires

Je ne peux pas imaginer ce que vous essayez de faire. La requête comporte de nombreuses erreurs. Je vous suggère de supprimer cette question et de poser une nouvelle question avec des exemples de données, les résultats souhaités et une balise de base de données appropriée.


J'ai besoin de sélectionner SNo dans les tables avec une quantité moyenne et plus de 50 et moins de 100


3 Réponses :


1
votes

Vous pouvez utiliser simplement faire une agrégation sans sous-requête:

select sno, avg(Qty) AS Average 
from supplier s
group by sno
having avg(qty) > 50 and avg(qty) < 100;

Si vous voulez un filtre avec des valeurs agrégées, vous pouvez faire:

select sno, avg(Qty) AS Average 
from supplier s
where qty > 50 and qty < 100
group by sno;

p >


0 commentaires

2
votes

D'après les commentaires:

J'ai besoin de sélectionner SNo dans des tables avec une quantité moyenne de plus de 50 et moins de 100

Pour cela, vous pouvez utiliser l'agrégation et une clause ayant :

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


0 commentaires

1
votes

Votre question est un peu déroutante, mais je pense que c'est la suivante:

select tbaux.SNo from
(Select SNo, AVG(Qty) AS Average from Supplier Group By SNo ) as tbaux
where (tbaux.Qty) >50 AND (tbaux.Qty) <100;


1 commentaires

Merci Monsieur pour votre réponse