sql - 带有 JOINS 的 SQL SUM
问题描述
我正在尝试进行查询以显示所有电影详细信息以及该电影售出的总票数。
这是我的桌子:
https ://imgur.com/Tgu3XrA
到目前为止,这是我的代码:
SELECT Movies.MovieID, Title, Released, Runtime, Classification,
SUM(Tickets.SessionID)
FROM Movies
LEFT JOIN Sessions ON Movies.MovieID = Movies.MovieID
LEFT JOIN Tickets ON Movies.MovieID = Tickets.SessionID
GROUP BY Movies.MovieID
ORDER BY Released
结果如下: https ://imgur.com/a/mRKYjNG
这是数据库的概要;
BEGIN TRANSACTION;
DROP TABLE IF EXISTS "Movies";
CREATE TABLE 'Movies' ('MovieID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'Title' TEXT,'Released' INTEGER, 'Runtime' INTEGER,'Classification' TEXT, 'Plot' TEXT);
DROP TABLE IF EXISTS "Tickets";
CREATE TABLE 'Tickets' ('TicketID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'SessionID' INTEGER,'PricePaid' REAL,'TimeStamp' INTEGER);
DROP TABLE IF EXISTS "MemberTickets";
CREATE TABLE 'MemberTickets' ('TicketID' INTEGER PRIMARY KEY NOT NULL,'MemberID' INTEGER,'OnlinePurchase' INTEGER);
DROP TABLE IF EXISTS "MovieGenre";
CREATE TABLE 'MovieGenre' ('MovieID' INTEGER NOT NULL, 'Genre' TEXT NOT NULL, PRIMARY KEY ('MovieID', 'Genre'));
DROP TABLE IF EXISTS "Sessions";
CREATE TABLE 'Sessions' ('SessionID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'MovieID' INTEGER,'SessionTime' INTEGER, 'NormalPrice' REAL, 'SeatsAvailable' INTEGER, 'RoomID' INTEGER);
DROP TABLE IF EXISTS "Members";
CREATE TABLE 'Members' ('MemberID' INTEGER primary key autoincrement ,FirstName TEXT, LastName TEXT, Postcode TEXT );
COMMIT;
解决方案
您正在寻找COUNT()
并且您的第二个JOIN
条件不正确。
SELECT m.MovieID, m.Title, m.Released, m.Runtime, m.Classification,
COUNT(t.SessionID)
FROM Movies m LEFT JOIN
Sessions s
ON s.MovieID = m.MovieID LEFT JOIN
Tickets t
ON t.SessionID = m.SessionID
GROUP BY m.MovieID, m.Title, m.Released, m.Runtime, m.Classification
ORDER BY m.Released;
请注意,这GROUP BY
包括 SQL 中的所有未聚合列。
请注意,我还包括了表别名并限定了所有列名。当查询具有多个表引用时,您应该始终限定所有列名。表别名使这更容易。
推荐阅读
- php - 获取进行重定向的 URL
- amazon-web-services - 通过服务器将 S3 中的图像流式传输到客户端的最佳实践
- python - 如何激活虚拟 env/VSCode conda activate env 给 CommandNotFoundError
- c++ - 未从 QJsonObject 正确检索 QJsonArrays
- redis - 安装 Redis 使用 ./install_server.sh
- html - mat-list 上的子项
- android - Android AudioTrack 生成缓冲区,其中一只耳朵有一个频率,另一只耳朵有第二个频率
- linux - 我正在尝试在自定义 BPF 程序中探索 tcp_synack_timer 的功能,例如 BPF Performance Tools 一书
- c++ - C++ 对象实例化 - 使用空括号实例化对象时调用哪个构造函数
- kubernetes - EKS 集群中 AWS EBS 的 HDFS Namenode 格式问题