gpt4 book ai didi

Django 求和与计数

转载 作者:行者123 更新时间:2023-12-02 03:47:05 26 4
gpt4 key购买 nike

我有一些 MySQL 代码,如下所示:

SELECT 
visitor AS team,
COUNT(*) AS rg,
SUM(vscore>hscore) AS rw,
SUM(vscore<hscore) AS rl
FROM `gamelog` WHERE status='Final'
AND date(start_et) BETWEEN %s AND %s GROUP BY visitor

我正在尝试将其转换为该查询的 Django 版本,而不进行多次查询。这可能吗?我阅读了如何执行 Sum()Count(),但是当我想像我正在做的那样比较两个字段时,它似乎不起作用.

这是迄今为止我能想到的最好的方法,但没有用...

vrecord = GameLog.objects.filter(start_et__range=[start,end],visitor=i['id']
).aggregate(
Sum('vscore'>'hscore'),
Count('vscore'>'hscore'))

我也尝试在其中使用 'vscore>hscore',但这也不起作用。有任何想法吗?我需要使用尽可能少的查询。

最佳答案

聚合仅适用于 Django ORM 中的单个字段。我查看了各种聚合函数的代码,注意到单字段限制是硬连线的。基本上,当您使用 Sum(field) 时,它只是记录下来以备后用,然后将其传递给特定于数据库的后端以转换为 SQL 并执行。显然,聚合和注释在 SQL 中没有标准化。

无论如何,您可能需要 use a raw SQL query.

关于Django 求和与计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16236762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com