2009-10-20 7 views

Répondre

2

C'est relativement simple.

t = (time of entry post) - (Dec 8, 2005) 

Vous convertir les valeurs de date à horodatages (vous pouvez utiliser unix_timestamp), ce qui vous donne un entier qui peut être utilisé dans le reste des comparaisons.

x = upvotes - downvotes 

Celui-ci devrait être assez facile ... évidemment MySQL supporte la soustraction.

y = {1 if x > 0, 0 if x = 0, -1 if x < 0) 
z = {1 if x < 0, otherwise x} 

Pour ces derniers, un coup d'oeil à la déclaration case de MySQL.

log(z) + (y * t)/45000 

MySQL a une fonction log, de sorte que celui-ci devrait être facile aussi, juste mathématiques simples.

Et, vous liez tout cela avec une instruction select. Vous pouvez stocker des calculs intermédiaires dans votre instruction select en utilisant user-defined variables. Par exemple:

select @x := (upvotes - downvotes) as x, 
     (@x > 4) as isXGreaterThanFour 
+0

Comment utilisez-vous 'x' (upvotes-downvotes) dans l'instruction CASE? –

+0

J'ai ajouté un exemple d'utilisation des variables pour les calculs intermédiaires –

+0

Seriez-vous en mesure d'écrire ceci dans son intégralité? Je suis encore plutôt confus ici ... –

Questions connexes