我如何指定我的条件是数字.sqlite3



我在这里有这个查询,它应该从一个名为ratings的表中计算平均评级,该表有一个movie_id和一个评级列。但是我必须计算2012年上映的电影的平均值。我需要计算我选择的表名的平均值我选择avgg,它有num,这是我要写入的文本而rat是评分的平均值。我认为我的问题是,我的代码不比较2012作为一个数值。这是查询。

CREATE TABLE avgg(num TEXT, rat INTEGER)
INSERT INTO avgg(num)
VALUES('The average is')
INSERT INTO avgg(rat)
SELECT avg(rating)
FROM ratings 
WHERE movie_id = (SELECT id FROM movies WHERE year = 2012)

问题在于您使用的语法。
您可以在单个INSERT语句中插入包含numrat列的行:

INSERT INTO avgg(num, rat)
SELECT 'The average is', AVG(rating)
FROM ratings 
WHERE movie_id IN (SELECT id FROM movies WHERE year = '2012');

或带join:

INSERT INTO avgg(num, rat)
SELECT 'The average is', AVG(r.rating)
FROM ratings r INNER JOIN movies m
ON m.id = r.movie_id 
WHERE m.year = '2012';

最新更新