计算唯一值并按日期分组

问题描述 投票:0回答:1

我有一张像这样的桌子:

client_id 行动 日期(日期时间)
1 参观 2024-10-10 10:00
1 参观 2024-10-10 12:00
1 参观 2024-10-10 13:00
2 参观 2024-10-10 13:00

因此,我需要按日期计算分组的唯一客户数量。结果应类似于 {'date': 2024-10-10, "count_visits": 2}。

我尝试了注释(unique = True)和OuterRef的几种变体,但它从来没有按日期分组。

django django-orm
1个回答
0
投票

这是遵循 Raymond Hettinger 预先命令使用 dict 的解决方案:

from collections import defaultdict

# get the first queryset:
temp_qs = MyModel.objects.filter(
    action="visits",
    date__gte=from_date,
    date__gte=to_date,
)

# get a dict with visits for each client:
visits_dict= defaultdict(list)
for temp_val in temp_qs:
visits_dict[temp_val.client].append(temp_val)

# count what you except:
count_dict = {client : defaultdict(int) for client in visits_dict}
count_dict=defaultdict(int)
for client,visits in visits_dict.items():
    count_dict[client][visits.date]+=1

# if you really want a dict as you wrote :
your_dict = dict()
for client, date in count_dict.items():
    your_dict[client]= {
        'date': date, 
        "count_visits": count_dict[client][date]
    }

希望对你有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.