Salut,
je voudrais optimiser la requete ci dessous car elle prend bq de temps
J'ai trois table
Je voudrais récuperer pour chaque "place" la moyenne des "price" des orderids avec le plus grand updatenum
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ORDER(orderid varchar, instid varchar) ORDERST(orderid varchar, updatenum integer, price varchar) INST(instid varchar, place varchar)
Par exemple
si j'ai dans la table order
donc on devra recuperer pour la place x un average price de AVG(20+15)('ord1', 'inst1')
('ord2', 'inst2')
('ord3', 'inst1')
('ord4', 'inst2')
et dans INST on a
('inst1', 'x')
('inst2', 'y')
et dans ORDERST
('ord1', 1, 0)
('ord1', 2, 10)
('ord1', 3, 15)
('ord3', 1, 0)
('ord3', 2, 20)
('ord3', 3, 20)
voila la requete que j'essaye de faire
Comme vous pouvez le deviner, c'est le max qui me trouble et que j'arrive pas à bien placer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select AVG(cast(os.PRICE as DOUBLE)) from ORDERST os INNER JOIN ORDER co ON os.ORDERID = o.ORDERID INNER JOIN INST inst ON o.INSTID = inst.INSTID WHERE inst.PLACE = 'X' AND os.updatenum IN (SELECT MAX(os2.updatenum) FROM ORDERST os2 where os.ORDERID = os2.ORDERID)
cette requete n'est pas terrible a cause du IN, elle prend bq de temps, comment pourrais je l'améliorer
Merci
Partager