<p>I've got the following query to determine how many votes a story has received:</p>

<pre><code>SELECT s_id, s_title, s_time, (s_time-now()) AS s_timediff, 

(
 (SELECT COUNT(*) FROM s_ups WHERE stories.q_id=s_ups.s_id) -
 (SELECT COUNT(*) FROM s_downs WHERE stories.s_id=s_downs.s_id)
) AS votes

FROM stories
</code></pre>

<p>I'd like to apply the following mathematical function to it for upcoming stories (I think it's what reddit uses) -
<a href="http://redflavor.com/reddit.cf.algorithm.png" rel="noreferrer">http://redflavor.com/reddit.cf.algorithm.png</a></p>

<p>I can perform the function on the application side (which I'm doing now), but I can't sort it by the ranking which the function provides.</p>

<p>Any advise?</p>

y and z are the tricky ones. You want a specific return based on x's value. That sounds like a good reason to make a function.
http://dev.mysql.com/doc/refman/5.0/en/if-statement.html
You should make 1 function for y and one for z. pass in x, and expect a number back out.
```
```
DELIMINATOR //

CREATE FUNCTION y_element(x INT) 
  RETURNS INT

BEGIN
    DECLARE y INT;

IF x > 0 SET y =  1;
ELSEIF x = 0 SET y =  0;
ELSEIF x < 0 SET y = -1;
END IF;

RETURN y;

END //;

DELIMINATOR;
```
```
There is y. I did it by hand without checking so you may have to fix a few typo's.
Do z the same way, and then you have all of the values for your final function.