mysql - MySQL Query - 使用 max 变量获取唯一对
问题描述
编辑:我意识到我没有做好提供背景的工作。因此,将对整个初始问题进行更改。
我目前正在使用三个表,如下所示。
create table Movie(mID integer, title varchar(100), year integer, director varchar(100));
create table Reviewer(rID integer, name varchar(100));
create table Rating(rID integer, mID integer, stars integer, ratingDate date);
insert into Movie values(101, 'Gone with the Wind', 1939, 'Victor Fleming');
insert into Movie values(102, 'Star Wars', 1977, 'George Lucas');
insert into Movie values(103, 'The Sound of Music', 1965, 'Robert Wise');
insert into Movie values(104, 'E.T.', 1982, 'Steven Spielberg');
insert into Movie values(105, 'Titanic', 1997, 'James Cameron');
insert into Movie values(106, 'Snow White', 1937, null);
insert into Movie values(107, 'Avatar', 2009, 'James Cameron');
insert into Movie values(108, 'Raiders of the Lost Ark', 1981, 'Steven Spielberg');
insert into Reviewer values(201, 'Sarah Martinez');
insert into Reviewer values(202, 'Daniel Lewis');
insert into Reviewer values(203, 'Brittany Harris');
insert into Reviewer values(204, 'Mike Anderson');
insert into Reviewer values(205, 'Chris Jackson');
insert into Reviewer values(206, 'Elizabeth Thomas');
insert into Reviewer values(207, 'James Cameron');
insert into Reviewer values(208, 'Ashley White');
insert into Rating values(201, 101, 2, date_format('2012-01-22','%Y-%m-%d'));
insert into Rating values(201, 101, 4, date_format('2013-01-27','%Y-%m-%d'));
insert into Rating values(202, 106, 4, null);
insert into Rating values(203, 103, 2, date_format('2008-01-20','%Y-%m-%d'));
insert into Rating values(203, 108, 4, date_format('2002-01-12','%Y-%m-%d'));
insert into Rating values(203, 108, 2, date_format('2009-01-30','%Y-%m-%d'));
insert into Rating values(204, 101, 3, date_format('2010-01-09','%Y-%m-%d'));
insert into Rating values(205, 103, 3, date_format('2010-01-27','%Y-%m-%d'));
insert into Rating values(205, 104, 2, date_format('2010-01-22','%Y-%m-%d'));
insert into Rating values(205, 108, 4, null);
insert into Rating values(206, 107, 3, date_format('2013-01-15','%Y-%m-%d'));
insert into Rating values(206, 106, 5, date_format('2014-01-19','%Y-%m-%d'));
insert into Rating values(207, 107, 5, date_format('2000-01-20','%Y-%m-%d'));
insert into Rating values(208, 104, 3, date_format('1999-01-02','%Y-%m-%d'));
我应该如何获得每部电影至少有一个评分,找到电影标题和总星数,最高星,以及给出最高星的评论者?
解决方案
您可以使用带有 WHERE 子句的 MySQL MAX() 函数来指定特定年份的最大付款条件,即返回最大值,这可以实现您的目标检查以下示例
SELECT
MAX(amount) largest_payment_2004
FROM
payments
WHERE
YEAR(paymentDate) = 2004;
推荐阅读
- perl - 鉴于 CGI.pm 的弃用状态,我应该从 CGI::Fast 迁移到其他东西吗?我应该怎么做?
- google-cloud-dataflow - 作业卡在“未开始”状态
- http - URL 中的特殊字符“@”
- oracle - 锁定文件的选择语句
- kotlin - 在 Kotlin 中使用多变量的 For 循环
- android - 与 android 支持库的依赖关系不适用于使用 Androidx 的项目
- powershell - 使用脚本powershell通过IP地址自动重命名并加入csv文件中的多台计算机
- c# - 如何在 addParameter 中插入 asc/desc 以在 SQL 查询中进行排序
- ruby-on-rails - 如何从循环中在 ruby 中创建 JSON 对象的 JSON 数组
- c# - 多重性在关系“CW_FirmaCommunication_CwFirma”中的角色“CW_FirmaCommunication_CwFirma_Source”中无效