【问题标题】:is it possible in SQL to call two difrent table with difrent data at the same time是否可以在 SQL 中同时调用具有不同数据的两个不同表
【发布时间】:2021-02-08 06:58:55
【问题描述】:

所以基本上我需要的是同时获取两个表,然后使用驻留在第一个表中的条件,我想将其应用于第二个表 如果不可能,我需要调用 SELECT Twice 吗? 这段代码对吗? 确定 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)
            );

【问题讨论】:

  • 完全有可能:它被称为“加入”。请提供几行样本数据和预期结果。
  • 我刚刚更改了包含数据表的代码,我需要确定 2012 年发布的所有电影的平均评分

标签: sql sql-server sqlite inner-join average


【解决方案1】:

我想你想要一个 JOIN 和一个聚合函数:

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

如果您想一次性使用所有年份,请使用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;

【讨论】:

    猜你喜欢
    • 2012-08-19
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    相关资源
    最近更新 更多