2010-01-05 5 views
1

J'ai plusieurs séries de données dans une table MySQL.MySQL divise deux séries les unes par les autres

Les champs sont Série, Date et Valeur. Y a-t-il un moyen pour moi de choisir, pour deux séries distinctes, toutes les dates pour lesquelles la série se chevauche et, pour chaque date, le quotient de la valeur de la série un et de la série deux.

Exemple:

Series Date Value
Dogs 2004 10
Dogs 2005 12
Dogs 2006 14
Dogs 2007 16
Cats 2004 6
Cats 2005 6
Cats 2006 7
Cats 2007 4

Je voudrais quelque chose comme SELECT Cats/Dogs et obtenir le résultat suivant

Date Value
2004 .6
2005 .5
2006 .5
2007 .25

+1

Veuillez fournir des exemples et des résultats attendus –

Répondre

2

Vous pouvez y parvenir avec une auto-jointure sur votre table.

SELECT cats.Series, cats.value/dogs.value 
FROM animals cats 
INNER JOIN animals dogs 
     ON dogs.Date = cats.Date 
WHERE cats.Series = "Cats" 
AND dogs.Series = "Dogs" 

Il serait préférable que la performance d'avoir un indice sur Date, et une clé sur (Series,Date) serait idéal.

Questions connexes