我有一些事故数据,我试图通过SQLite3在Python中查询。我试图确定一周中哪一天在特定年月对中发生的事故最多。数据包含以下字段:
意外:Accident_Index |年|月| DAY_OF_WEEK
其中Day_of_Week的范围是1-7,星期日是1.结果应按年份升序,然后是几个月,新表应包含以下列:
max_dayofweek:年|月| Day_of_Week | Num_of_Accidents
到目前为止,我有以下内容:
query = '''
SELECT Year, Month, Day_of_Week, count(*) as Num_of_Accidents
from Accidents
group by Year, Month, Day_of_Week
order by Year, Month
'''
max_dayofweek = pd.read_sql_query(query, conn)
但是这会回来:
Year Month Day_of_Week Num_of_Accidents
0 2009 1 1 623
1 2009 1 2 1095
2 2009 1 3 1197
3 2009 1 4 1244
4 2009 1 5 1123
5 2009 1 6 1404
6 2009 1 7 1114
7 2009 2 1 592
8 2009 2 2 919
9 2009 2 3 887
10 2009 2 4 1013
11 2009 2 5 915
12 2009 2 6 1032
13 2009 2 7 824
但输出应该如下:
Year Month Day_of_Week Num_of_Accidents
0 2009 1 6 1404
1 2009 2 6 1032
等等......
非常感谢任何帮助!
答案 0 :(得分:0)
在SQLite中,您可以这样做:
with ym as (
select Year, Month, Day_of_Week, count(*) as Num_of_Accidents
from Accidents
group by Year, Month, Day_of_Week
)
select ym.*
from ym
where ym.Num_of_Accidents = (select max(ym2.Num_of_Accidents)
from ym ym2
where ym2.year = ym.year and ym2.month = ym.month
)
order by Year, Month;
那就是说,你的计算可能会被取消,因为有些dows在一个月内出现四次,有些出现五次(除非你使用某种财政日历)。很遗憾,您没有具体的日期,因此您无法将其考虑在内。