如何使用MySQL查询计算Q& A网站中的投票点数

时间:2010-10-13 05:16:10

标签: mysql

我正在尝试执行以下查询

SELECT a.userid, COUNT(a.id) AS count_answers, SUM(v.yes_vote) as total_up_votes, SUM(v.all_vote - v.yes_vote) as total_down_votes, CAST(COUNT(a.id) + SUM(v.yes_vote) * 4 - SUM(v.all_vote) AS SIGNED) AS voting_points
FROM (answers a)
LEFT OUTER JOIN answers_vote_count v ON r.id = v.answer_id
GROUP BY a.userid
ORDER BY count_answers DESC

如您所见,我正在尝试计算收到的答案收到的分数。

点数计算如 -

  • 每个答案1分 - COUNT(答案)
  • 每次投票回答3分 - 3 * SUM(yes_vote)
  • ( - 1)指向每次下注 - SUM(all_vote) - SUM(yes_vote)

我的麻烦是 - 如果答案没有up_vote和down_vote,那么这些点就会变成NULL。 COUNT(答案)部分无法正常工作。

我在这里做错了什么?

此致

2 个答案:

答案 0 :(得分:0)

将预先计算的分数值存储在问题表中。

答案 1 :(得分:0)

我明白了。由于我正在进行LEFT JOIN投票,这就是为什么没有找到投票的答案会变为NULL。这可以使用SQL查询中的CASE WHEN ELSE来解决 - 当总IS NULL时使用0。