Bonjour,
J'ai une table, ci-jointe, sur laquelle je souhaite connaitre le produit pour laquelle j'ai le plus fort taux de réduction toutes promos confondues.
Il ne doit plus y avoir de doublon sur les produits.
Merci !! et bonne chance ...
Bonjour,
J'ai une table, ci-jointe, sur laquelle je souhaite connaitre le produit pour laquelle j'ai le plus fort taux de réduction toutes promos confondues.
Il ne doit plus y avoir de doublon sur les produits.
Merci !! et bonne chance ...
Bonjour,
Et s'il y a exaequo ?
Cette requête vous les sortira tous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT LesColonnes FROM LaTable WHERE TauxReduction = (SELECT MAX(TauxReduction) FROM LaTable)
S'il y a un exæquo, il faut prendre de premier qu'on trouve.
Par contre, cette requête ne retourne qu'une seule ligne avec le MAX de la collection.
Le résultat attendu doit faire un distinct des produits avec le taux de remise le plus important (voir la PJ ).
Sans critère ??? cela veut dire que deux exécutions successives pourraient donner des résultats différents...
Quel est votre SGBDR ?
Vous voulez donc la meilleure promo par produitPar contre, cette requete ne retourne qu'une seule ligne avec le MAX de la collection.
Le résultat attendu doit faire un distinct des produits avec le taux de remise le plus important ( voir la PJ )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT R.LesColonnes FROM LaTable R INNER JOIN ( SELECT Produit, MAX(TauxReduction) AS Reduc FROM LaTable GROUP BY Produit ) T ON T.Produit = R.Produit AND T.Reduc = R.Reduc
Yes, je n'avais pas pensé à utiliser une requête pour la jointure !!
Reste à ne plus prendre qu'une seule valeur lorsque la remise est identique.
En connaissant votre SGBDR, on pourrait trouver une requête spécifique, mais en voici une plus générale.
Comme visiblement vous n'avez aucune préférence sur la promo qui ressortira en cas d'ex æquo, on va prendre arbitrairement celle qui a l'ID le plus élevé...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 SELECT R.LesColonnes FROM LaTable R INNER JOIN ( -- reduction max par produit SELECT Produit, MAX(TauxReduction) AS Reduc FROM LaTable GROUP BY Produit ) T ON T.Produit = R.Produit AND T.Reduc = R.Reduc INNER JOIN ( --idPromo max par produit et reduc SELECT Produit, TauxReduc AS Reduc, MAX(Promo) AS Promo FROM LaTable GROUP BY Produit ) P ON P.Produit = R.Produit AND P.Reduc = T.Reduc AND P.Promo = R.Promo
Super, encore merci !!
Pour info, je suis sur PostgreSql
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager