0

我想基本上取一个数字(total_score)并将其除以 <= 今天的(release_date)数量。我绝对想在 SELECT 语句中进行数学运算。我试过这个,但它似乎不起作用:

SELECT 
total_score / COUNT(release_date <= CURDATE()) as final_score
from movies
WHERE id = 12

所以说总分是 400,而今天 <= 的 release_dates 数是 2。final_score 应该是 200。

我可以像这样在 SELECT 语句中计算吗? COUNT(release_date <= CURDATE())

4

4 回答 4

1

也许试试这个:

SELECT 
total_score / (SELECT COUNT(release_date) FROM movies where release_date <= CURDATE()) as final_score
from movies
WHERE id = 12
于 2013-03-04T14:03:13.703 回答
0

也许尝试这样的事情: -

SELECT (total_score / score_count) as final_score
FROM movies
CROSS JOIN (SELECT COUNT(*) as score_count
FROM movies
WHERE release_date <= CURDATE()) AS Sub1
WHERE id = 12
于 2013-03-04T14:03:21.270 回答
0

不起作用的一个原因是您只选择了一行(其中 id=12)。您需要从表中选择两次。一次获取 id 12 的 total_score,另一次计算 CURDATE 之前的行数。尝试类似:

select A.total_score / count(B.release_date) from movies as A, movies as B
   where A.id=12 and B.release_date <= CURDATE();
于 2013-03-04T14:07:44.150 回答
0

根据我的假设,Id 是主键(即电影的 ID)。然后查询总是返回单行。现在到 final_score 取决于发布日期。该发布日期必须早于当前日期,因此以下查询足以实现您的目标,

SELECT total_score / DATEDIFF(CURDATE(), release_date) AS final_score FROM movies WHERE id = 12
于 2013-03-04T14:23:32.083 回答