Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
select categorie, article, avg(ventes) as average_ventes, 
ROW_NUMBER() OVER(partition by categorie order by categorie, avg(ventes) DESC) AS 'RowNumber'
from ARTILCES P
inner join VENTES V on V.article = A.article
group by categorie, V.article
Ce code là me génére les ventes moyennes de chaque article par catégorie.
Le RowNumber est une colonne que j'ai du ajouter pour numéroter les lignes de chaque catégorie (se réinitalize à 1 à chaque changement dans le colonne catégorie)

donc, des enregistrements de la forme (categorie, article, ventes, rownumber)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
cat1	1204640	71.4060		1
cat1	 396233	41.9904		2
cat1    1249238	18.9575		3
cat1     396226	 5.5059		4
cat2    2827032	908.122		1
cat2    1294508	446.263		2
cat2 	1284515	 95.345		3
cat3 	2755212	815.432		1
cat3 	2269163	721.295		2
cat3 	3560884	349.409		3
cat3 	3560921	 78.424		4
cat3 	3560922	 68.424		5
ce n'est qu'un petit aperçu car le rownumber peut aller à 2000 ou plus par exemple...

Ce que je veux en fait, c'est d'extraire l'information :
"Quel article (par catégorie bien entendu) occupe la position médiane?"
je m'explique:
pour catégorie 1 : nous avons 4 articles
50% des articles de categorie1 ici ont un volume de ventes supérieur à 41.9904 (l'ordre fourni par le code sql le montre bien)

En plus simple, la position médiane correspond à l'article dont le rownumber est égal au max de ses rownumbers (ici cat1-->4, cat2-->3 et cat3-->5) divisé par 2

Des idées ? merci