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

うまくいかない理由の 1 つは、1 つの行 (id=12) しか選択していないことです。テーブルから 2 回選択する必要があります。1 回目は ID 12 の total_score を取得し、もう 1 回は 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

たぶん、このようなことを試してください:-

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は主キー(つまり、映画のID)です。次に、クエリは常に単一の行を返します。現在、final_score はリリース日によって異なります。そのリリース日は現在の日付より前でなければならないため、次のクエリで目標を達成できます。

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