找到记录最多的十年,SQL Server

时间:2014-12-07 00:18:16

标签: sql sql-server

我有以下数据库图表:

Database Diagram for Movies http://i57.tinypic.com/ic5w2d.png

我想找到拥有最多电影数量的十年(例如1990年至2000年)。 实际上它只涉及“电影”表。

关于如何做到这一点的任何想法?

4 个答案:

答案 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