繁体   English   中英

MySQL:使用SELECT语句中的COUNT计算数字吗?

[英]MySQL: Calculate number using COUNT within the SELECT statement?

我想基本上取一个数字(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())

也许试试这个:

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

也许尝试这样的事情:

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

无效的原因之一是您只选择了一行(其中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();

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

SELECT total_score / DATEDIFF(CURDATE(), release_date) AS final_score FROM movies WHERE id = 12

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM