Así que, básicamente, lo que necesito es obtener dos tablas al mismo tiempo y luego usar una condición que resida en la primera tabla y quiero aplicarla a la segunda, si no es posible, ¿necesito llamar a SELECT Twice? ¿Este código es correcto? para determinar la calificación promedio de todas las películas estrenadas en 2012

SELECT AVG(rating),year FROM ratings , movies
   WHERE year = 2012;
//these are the tables that i have 

CREATE TABLE movies (
                    id INTEGER,
                    title TEXT NOT NULL,
                    year NUMERIC,
                    PRIMARY KEY(id)
                );
CREATE TABLE stars (
                movie_id INTEGER NOT NULL,
                person_id INTEGER NOT NULL,
                FOREIGN KEY(movie_id) REFERENCES movies(id),
                FOREIGN KEY(person_id) REFERENCES people(id)
            );
CREATE TABLE directors (
                movie_id INTEGER NOT NULL,
                person_id INTEGER NOT NULL,
                FOREIGN KEY(movie_id) REFERENCES movies(id),
                FOREIGN KEY(person_id) REFERENCES people(id)
            );
CREATE TABLE ratings (
                movie_id INTEGER NOT NULL,
                rating REAL NOT NULL,
                votes INTEGER NOT NULL,
                FOREIGN KEY(movie_id) REFERENCES movies(id)
            );
CREATE TABLE people (
                id INTEGER,
                name TEXT NOT NULL,
                birth NUMERIC,
                PRIMARY KEY(id)
            );
-1
NerdyTechFace 26 oct. 2020 a las 02:57

1 respuesta

La mejor respuesta

Creo que quieres una JOIN y una función agregada:

SELECT AVG(r.rating) avg_rating_2012
FROM ratings r
INNER JOIN movies m on m.id = r.movie_id
WHERE m.year = 2012;

Si desea esto para todos los años a la vez, use GROUP BY:

SELECT m.year, AVG(r.rating) avg_rating
FROM ratings r
INNER JOIN movies m on m.id = r.movie_id
GROUP BY m.year;
0
GMB 26 oct. 2020 a las 00:05