C'est ma requête en cours, cela fonctionne, mais il est lent:Optimisation des requêtes
SELECT row, MIN(flg) ||' to ' ||Max (flg) as xyz , avg(amt_won), count(*)
FROM(
SELECT (ROW_NUMBER() OVER (ORDER BY flg))*100/
(SELECT count(*)+100 as temprow FROM temporary_six_max) as row, flg, amt_won
FROM temporary_six_max
JOIN (
SELECT id_player AS pid, avg(flg_vpip::int) AS flg
FROM temporary_six_max
GROUP BY id_player
) AS auxtable
ON pid = id_player
) as auxtable2
group by 1
order by 1;
je groupe en fixe (ou presque fixe) compte 100 plages qui sont commandés par avg (flg_vpip) regroupés par id_player.
Ici, j'ai collé les résultats dans le cas où il peut aider à comprendre: https://spreadsheets0.google.com/ccc?key=tFVsxkWVn4fMWYBxxGYokwQ&authkey=CNDvuOcG&authkey=CNDvuOcG#gid=0
Je me demande s'il y a une meilleure fonction à utiliser que ROW_NUMBER() dans ce cas et je me sens comme je le fais aussi beaucoup de sous-sélection mais je ne sais pas comment l'optimiser.
J'apprécierai beaucoup toute aide.
Si quelque chose n'est pas clair, faites le moi savoir.
Merci.
EDIT:
Si je créé auxtable 2, est que lors de l'utilisation (ROW_NUMBER() OVER (ORDER BY FLG), et utiliser d'autres commandes d'agrégat tel que le moyen (amt_won) et count (*), qui sont essentiels, je reçois une erreur disant que FLG devrait être dans la fonction d'agrégation, mais je ne peux pas commander par une fonction d'agrégation de FLG
Veuillez aussi publier la sortie de EXPLAIN ANALYZE. Et s'il vous plaît expliquer ce que vous essayez de réaliser avec les sélections imbriquées (je veux dire * auxtable4 * pas la table dérivée * auxtable2 * Actuellement je ne comprends pas le but de cela –
J'ai posté l'ANALYZE EXPLAIN dans le gdocs sur le lien ci-dessus Merci pour la création de auxtable4 et auxtable 2. Merci – joaoavf
'max (row_number())' est essentiellement 'count (*) over (...)', mais je ne comprends toujours pas les calculs que vous faites à cela (divisant et le +100) .Mais je comprends l'intention maintenant –