首页 > 解决方案 > 如何在sqlite查询中将组中的年份组合为10

问题描述

MOVIE (Mid, name, year, rank) 我想计算十年内的电影数量。假设表中的年份从 1931 年开始,那么从 1931 年到 1940 年的年份将形成一个十年。

我的查询:

query_7 = pd.read_sql_query('''SELECT yr.year as dec_start,yr.year + 9 as dec_end,COUNT(DISTINCT m.MID) as num_movies
                             FROM  (SELECT DISTINCT year FROM Movie) yr ,Movie m WHERE m.year >= yr.year
                             AND m.year < yr.year + 10
                             GROUP BY yr.year 
                             ORDER BY yr.year 
                             ''',conn)

输出:

在此处输入图像描述

此查询的问题是对于每个独特的年份,它都从该年份开始计算十年。而所需的输出是如果 1931 年是数据库中最低的年份,那么第一个十年应该从 1931 年开始,下一个十年应该从 1941 年开始,而不是从 1936 年开始。

对此的任何见解都非常感谢

标签: pythonsqlpandassqlitedate

解决方案


我认为这可以满足您的要求:

SELECT 
    year/10 * 10 + 1 as dec_start,
    year/10 * 10 + 10 as dec_end,
    COUNT(mid) as num_movies
FROM  Movie
GROUP BY year/10 
ORDER BY dec_start

这通过对年份执行整数除法,然后调整以获得十年来工作。

说年是1934year/10193,然后193 * 10 + 1生产1931,而193 * 10 + 10产量1940

我认为您实际上不需要count(distinct)count()应该这样做)。


推荐阅读