【发布时间】:2012-04-02 21:04:16
【问题描述】:
您好,我有一个查询,在 mysql 中编写起来非常简单,但我很难翻译成 Django:
SELECT year, month, AVG(mean_air_temp), AVG(min_air_temp), AVG(max_air_temp) from climate WHERE recorded_on >= '1978-09-09' AND recorded_on <= '1988-09-09' GROUP by month;
我的数据如下所示:
+----+------+-------+-------------+---------------+--------------+--------------+----------+--------------+---------------+
| id | year | month | recorded_on | mean_air_temp | min_air_temp | max_air_temp | sea_temp | mean_rel_hum | precipitation |
+----+------+-------+-------------+---------------+--------------+--------------+----------+--------------+---------------+
| 1 | 1964 | 12 | 1964-12-31 | 26.1 | 22.2 | 30.8 | 25.8 | 82 | 0 |
| 2 | 1965 | 1 | 1965-01-01 | 23.9 | 21 | 25.8 | 22.7 | 84 | 0.7 |
| 3 | 1965 | 1 | 1965-01-02 | 23.4 | 21.1 | 26.2 | 22.4 | 83 | 0 |
我基本上试图以最有效的方式按月获取平均值,并通过另一个查询按年获取平均值。要平均的字段将是视图中的 Python 变量,日期和分组方法也是如此。
是否有原生的 Django 解决方案,或者我需要用 .extra() 做些什么(尽管我想避免这种情况,以免我与 mysql 绑定)?我查看了aggregate 的文档,但它们在这种情况下没有帮助。
任何帮助将不胜感激。
【问题讨论】: