#python #django #postgresql #date
#python #django #postgresql #Дата
Вопрос:
Я пытаюсь выбрать по неделям и подсчитываю, сколько билетов было продано на этой неделе.
я выбираю билеты, используя идентификатор СОБЫТИЯ.
WHERE EVENT ID 148
SAMPLE DATA: TICKETS TABLE
-------------------------------------------------
"General";0;"2016-09-02 17:50:45.644381 00"
"General";0;"2016-09-03 21:05:54.830366 00"
"General";0;"2016-09-02 18:21:33.976451 00"
"Early Bird";500;"2016-09-09 19:15:33.721279 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"Post Secondary Student";1000;"2016-09-06 14:46:53.90927 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"General";0;"2016-09-01 23:50:05.034436 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"Post Secondary Student";1000;"2016-09-06 14:46:53.90927 00"
"Post Secondary Student";1000;"2016-09-06 14:46:53.90927 00"
"General";0;"2016-09-03 18:39:15.571188 00"
"General";0;"2016-09-07 20:14:35.959517 00"
"General";0;"2016-09-03 21:33:04.349198 00"
"General";0;"2016-09-07 18:21:22.220223 00"
"General";0;"2016-09-01 23:34:55.773516 00"
"General";0;"2016-09-01 23:42:15.498778 00"
"Early Bird";500;"2016-09-09 19:15:33.721279 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"RSVP";0;"2016-09-27 21:27:33.378934 00"
"RSVP";0;"2016-09-14 22:23:04.922607 00"
"RSVP";0;"2016-09-14 22:23:04.922607 00"
"General Admission";0;"2016-09-23 15:35:54.972803 00"
"General Admission";0;"2016-09-23 15:35:54.972803 00"
"RSVP";0;"2016-09-14 22:23:04.922607 00"
"RSVP";0;"2016-09-14 22:23:04.922607 00"
"General";1000;"2016-09-09 19:15:33.72771 00"
"General Admission";0;"2016-09-23 15:35:54.972803 00"
"General Admission";0;"2016-09-23 15:35:54.972803 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"RSVP";0;"2016-09-14 22:23:04.922607 00"
"RSVP";0;"2016-09-14 22:23:04.922607 00"
"General Admission";0;"2016-09-23 15:35:54.972803 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"Youth";0;"2016-09-06 14:46:53.903704 00"
"General Admission";0;"2016-09-23 15:35:54.972803 00"
"General Admission";0;"2016-09-23 15:35:54.972803 00"
"Free Admission";0;"2016-10-03 19:12:12.965369 00"
"Free Admission";0;"2016-10-06 19:00:25.926406 00"
"Free Admission";0;"2016-10-06 19:00:25.926406 00"
Любые предложения, как я мог бы этого добиться?
Я СДЕЛАЛ ЭТО, ЧТОБЫ НАЙТИ И ПОСЧИТАТЬ ПО ДНЯМ:
Ticket.objects.filter(event_id=event_id, event_ticket_id=ticket_type.id, refunded=False).extra(where=('created',),
select={'date_sold':'date(created)'}).values('date_sold').annotate(sold_count=Count('id'))
но не смог сделать по неделям.
Спасибо
Комментарии:
1. я добавил то, что сделал за день
Ответ №1:
Вот решение, которое я использовал в аналогичной ситуации. Однако я использовал необработанный SQL-запрос.
Ticket.objects.raw('''SELECT COUNT(app_ticket.id) as id, app_ticket.name, EXTRACT(WEEK FROM app_ticket.created) as week, EXTRACT(YEAR FROM app_ticket.created) as YEAR
FROM app_ticket
WHERE app_ticket.event_id = %s
GROUP BY app_ticket.name, EXTRACT(WEEK FROM app_ticket.created), EXTRACT(YEAR FROM app_ticket.created), app_ticket.id
ORDER BY EXTRACT(WEEK FROM app_ticket.created), EXTRACT(YEAR FROM app_ticket.created)''', [1])
Надеюсь, это поможет.