我有以下数据库图表:
Database Diagram for Movies http://i57.tinypic.com/ic5w2d.png
我想找到拥有最多电影数量的十年(例如1990年至2000年)。 实际上它只涉及“电影”表。
关于如何做到这一点的任何想法?
答案 0 :(得分:3)
您可以使用SQL Server中的LEFT功能来获取一年中的十年。这十年是今年的前三位数。您可以按十年分组,然后计算电影数量。如果您按照电影数量对结果进行排序或排序 - 电影数量最多的十年将位于顶部。例如:
select
count(id) as number_of_movies,
left(cast([year] as varchar(4)), 3) + '0s' as decade
from movies
group by left(cast([year] as varchar(4)), 3)
order by number_of_movies desc
答案 1 :(得分:1)
字符串方法的替代方法是使用整数除法来获得十年:
SELECT [Year]/10*10 as [Decade]
, COUNT(*) as [CountMovies]
FROM Movies
GROUP BY [Year]/10*10
ORDER BY [CountMovies] DESC
这将返回所有,按照电影最多的十年排序。您可以添加TOP(1)以仅获得顶部,但是您需要考虑决胜局场景以确保获得确定性结果。
答案 2 :(得分:0)
select substring(cast([year] as varchar), 1, 3) as Decade,
Count(1) [Count]
from Movies
group by substring(cast([year] as varchar), 1, 3)
order by 2 desc
答案 3 :(得分:0)
SELECT floor(Year(getdate())/10)*10
, floor(year('5/11/2004')/10)*10
, floor(Year('7/23/1689')/10)*10
, floor(Year('7/09/1989')/10)*10