[英]sql - aggregate max function and group by
select city, title, releasedate
from movies join shownat on shownat.movietitle = movies.title join theatres on theatres.theatrename = shownat.theatrename
group by city, title, releasedate
order by city, max(releasedate) desc;
上面是我的查询,这个问题要解决。
查找每个城市显示的最新电影的标题。 显示城市名称和最新电影名称(按城市名称和电影名称排序)。
归一化的数据有3个表,分别称为剧院,电影院和电影院。 是的,我知道上图所示的发布日期可能会更有效,对我来说更有意义,因为并非总是在同一时间在同一地区或城市发布视频。 但是,这是我坚持的最后一个家庭作业问题。 需要的是该城市应该只有1个列表。 我认为按城市分组将解决这个问题。 对于每个城市,我需要数据集中每个特定城市(4)中具有最新发行日期的电影的标题。 我不确定为什么当我具有按此功能的group by功能及其用于处理合计max函数时,为什么在这里得到重复。 max函数应该只是给我最新版本?
"CITY" "TITLE" "RELEASEDATE"
"Cincinnati" "Interstellar" 07-NOV-14
"Cincinnati" "Big Hero 6" 07-NOV-14
"Cincinnati" "Nightcrawler" 31-OCT-14
"Cincinnati" "Gone Girl" 03-OCT-14
"Cincinnati" "The Pianist" 03-JAN-03
"Cincinnati" "Fargo" 05-APR-96
"Cincinnati" "Schindler's List" 04-FEB-94
"Florence" "Big Hero 6" 07-NOV-14
"Florence" "Interstellar" 07-NOV-14
"Florence" "Nightcrawler" 31-OCT-14
"Florence" "Gone Girl" 03-OCT-14
"Florence" "District 9" 14-AUG-09
"Florence" "A Perfect Getaway" 07-AUG-09
"Florence" "Aliens in the Attic" 31-JUL-09
"Florence" "Away We Go" 26-JUN-09
"Florence" "Up" 29-MAY-09
"Florence" "Star Trek" 08-MAY-09
"Florence" "The Hurt Locker" 10-OCT-08
"Florence" "The Dark Knight" 18-JUL-08
"Florence" "The Departed" 06-OCT-06
"Florence" "The Green Mile" 10-DEC-99
"Newport" "Interstellar" 07-NOV-14
"Newport" "Big Hero 6" 07-NOV-14
"Newport" "Gone Girl" 03-OCT-14
"Newport" "District 9" 14-AUG-09
"Newport" "A Perfect Getaway" 07-AUG-09
"Newport" "Away We Go" 26-JUN-09
"Newport" "Up" 29-MAY-09
"Newport" "The Departed" 06-OCT-06
"Wilder" "Big Hero 6" 07-NOV-14
"Wilder" "Interstellar" 07-NOV-14
"Wilder" "Gone Girl" 03-OCT-14
"Wilder" "Public Enemies" 01-JUL-09
"Wilder" "The Departed" 06-OCT-06
这将是查询,但我不确定max函数是否可以与日期变量一起使用:
SELECT city, title, max (releasedate) as max_dateRelease
FROM movies inner join shownat on shownat.movietitle = movies.title join theatres
on theatres.theatrename = shownat.theatrename
GROUP BY city, title, releasedate
ORDER BY city, max_dateRelease desc
select T1.city,T2.movietitle,T1.releasedate
from
(select city,max(releasedate) as maxreleasedate
from movies join shownat on shownat.movietitle = movies.title join theatres on theatres.theatrename = shownat.theatrename
group by city) as T1
inner join
(select shownat.movietitle,shownat.city,shownat.releasedate)
from shownat) as T2
on T1.city=T2.city and T1.maxreleasedate=T2.releasedate
这是一种方法,也不是最佳方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.