Có thể sao chép truy vấn mysql sau đây trong Django mà không sử dụng phương pháp chọn không?Nhóm Django theo ngày và giá trị SUM
MariaDB [db1]> SELECT datetime, SUM(datas) FROM table AND datetime BETWEEN '2013-07-26 13:00:00' AND '2013-07-26 23:00:00' GROUP BY datetime;
Để có được loại này kết quả:
+---------------------+-----------+
| datetime | SUM(data) |
+---------------------+-----------+
| 2013-07-26 13:00:00 | 489 |
| 2013-07-26 14:00:00 | 2923 |
| 2013-07-26 15:00:00 | 984 |
| 2013-07-26 16:00:00 | 2795 |
| 2013-07-26 17:00:00 | 1308 |
| 2013-07-26 18:00:00 | 1365 |
| 2013-07-26 19:00:00 | 1331 |
| 2013-07-26 20:00:00 | 914 |
| 2013-07-26 21:00:00 | 919 |
| 2013-07-26 22:00:00 | 722 |
| 2013-07-26 23:00:00 | 731 |
+---------------------+-----------+
11 rows in set (1.45 sec)
Chỉnh sửa: Tôi đã nhận cho bây giờ loại truy vấn:
>>> value = table.objects.filter(datetime__range=('2013-07-26 13:00:00',
'2013-07-26 23:00:00')).values('datetime', 'data').annotate(Sum('data'))
>>> print value.query
SELECT `table`.`datetime`, `table`.`data` SUM(`table`.`imps`) AS `data__sum`
FROM `table`
WHERE `table`.`datetime` BETWEEN 2013-07-26 13:00:00
and 2013-07-26 23:00:00 GROUP BY `table`.`datetime`,
`table`.`data` ORDER BY NULL
Tại sao tổng hoạt động trên cả hai datetime và dữ liệu?
Tôi đã cố gắng để ở khắp mọi nơi trên django doc, ở đây trên ngăn xếp nhưng không tìm thấy cái gì gắn liền với vấn đề của tôi. Bất kỳ đề xuất nào?
SQL gì queryset của bạn tạo ra? Bạn có thể sử dụng 'print values.query' –
Chuyển đổi thứ tự' .annotate() 'và' .values () ' –