2009-12-01 7 views
1

Je tente de créer des scores centiles. Ma requête génère les rangs correctement, mais le fossé ne fait rien (les rangs sont affichés dans les colonnes plutôt que des scores)Divide ne fait rien

"/"(RANK() OVER(ORDER BY "Disk IO"),Count(*)) "Disk IO Score" 

J'ai aussi essayé de générer le rang puis en sélectionnant et en divisant ce, mais il a le même résultat.

SELECT ..."/"("Disk IO Score",Count(*)) "Score"... 
FROM(....RANK() OVER(ORDER BY "Disk IO") "Disk IO Score"...) 

Merci, Buzkie

SELECT "System_Name", "/"(RANK() OVER(ORDER BY "Disk IO"),Count(*)) "Disk IO Score" 
FROM (Select...) 
GROUP BY "System_Name", "Disk IO" 
+0

Que renvoient votre 'COUNT (*) s'? – Quassnoi

+0

Bonne question. Retour 1, ce qui est logique à partir des résultats, mais pas souhaité – Buzkie

Répondre

0

Je suppose que c'est une réponse. Le compte (*) renvoyait 1 alors je divisais juste par 1.

0

Semble que vous utilisez COUNT(*) global plutôt que d'une analyse.

Essayez ceci:

SELECT RANK() OVER (...)/COUNT(*) OVER (...) 

Et pourriez-vous s'il vous plaît poster toute requête (y compris GROUP BY clauses)?

+0

code mis à jour au dessus – Buzkie

+0

Je pense que j'ai compris le problème. Les comptages renvoient le nombre d'instances de chaque serveur qui est 1 en raison du regroupement. Pouvez-vous penser à un moyen d'obtenir le compte de tous les serveurs? – Buzkie

+0

Il est difficile de dire avec toutes vos obfuscations. Quel est le serveur? – Quassnoi

Questions connexes