2016-01-29 126 views
0
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; 

以上是我的查詢,並解決了這個問題。sql - 聚合最大功能和組

找到每個城市中顯示的最新電影的標題。顯示按城市名稱和電影標題排序的城市名稱和最新電影標題。

標準化的數據有3個表稱爲劇院,如圖和電影。是的,我意識到發佈日期可能會更加高效,對我來說更有意義,因爲並不總是視頻始終在同一日期的同一地區或城市發佈。然而,這是我最後的作業問題,我堅持。 需要的是,該城市應該只有1個上市。我以爲城市的團隊會照顧這個。對於每個城市,我需要數據集中每個特定城市(4個)具有最新發布日期的電影標題。我不確定爲什麼我在這裏得到重複的時候,當我有這個功能的組和功能來處理聚合最大功能。最大功能應該給我最新的版本是嗎?

"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 
+1

max()進入查詢的選定部分。 –

+0

但在城市裏,它仍然給我倍數。我意識到獨特可以照顧到這一點,但我還以爲小組會呢? – camdixon

+0

每個城市只有一次,返回最新日期的行?要麼不存在,要麼自我加入! – jarlh

回答

1

這將是查詢,但我不能肯定是否會最大的功能與日期變量的工作原理:

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 
+0

不要「GROUP BY」你正在聚合的東西('releasedate')。 –

+0

我對答案進行了編輯,從羣組中刪除已發佈的答案,並將其作爲正式答案接受。 – camdixon

0
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 

這是一種方式,而不是最好的辦法。