Fixed orders/weekday statistic, improved statistics page layout
This commit is contained in:
parent
60d2df9fb9
commit
31ae251164
5 changed files with 62 additions and 39 deletions
|
@ -3,6 +3,7 @@
|
|||
from django.conf import settings
|
||||
from django.db import connection
|
||||
from django.utils.translation import gettext
|
||||
from calendar import day_name
|
||||
|
||||
|
||||
COMBINE_ALPHABET = "abcdefghijklmnopqrstuvwxyz"
|
||||
|
@ -102,29 +103,34 @@ def orders_per_month(user) -> list:
|
|||
group by "month"
|
||||
order by "month" desc;
|
||||
""")
|
||||
return _combine_results([result_user, result_all])
|
||||
return _combine_results([result_all, result_user])
|
||||
|
||||
|
||||
def orders_per_weekday(user) -> list:
|
||||
# number of orders per weekday (all time)
|
||||
result_user = _db_select(f"""
|
||||
select
|
||||
to_char(datetime, 'Day') as "day",
|
||||
sum(amount) as "count"
|
||||
from app_order
|
||||
where user_id = {user.pk}
|
||||
group by "day"
|
||||
order by "count" desc;
|
||||
result = _db_select(f"""
|
||||
with q_all as (
|
||||
select
|
||||
extract(isodow from datetime) as "d",
|
||||
sum(amount) as "c"
|
||||
from app_order
|
||||
group by d
|
||||
), q_user as (
|
||||
select
|
||||
extract(isodow from datetime) as "d",
|
||||
sum(amount) as "c"
|
||||
from app_order
|
||||
where user_id = {user.pk}
|
||||
group by d
|
||||
)
|
||||
select q_all.d as "day", q_all.c, q_user.c from q_all full join q_user on q_all.d = q_user.d
|
||||
group by day, q_all.c, q_user.c
|
||||
order by day asc;
|
||||
""")
|
||||
result_all = _db_select(f"""
|
||||
select
|
||||
to_char(datetime, 'Day') as "day",
|
||||
sum(amount) as "count"
|
||||
from app_order
|
||||
group by "day"
|
||||
order by "count" desc;
|
||||
""")
|
||||
return _combine_results([result_user, result_all])
|
||||
for i in range(len(result)):
|
||||
day_, all_, user_ = result[i]
|
||||
result[i] = (day_name[int(day_)-1], all_, user_)
|
||||
return result
|
||||
|
||||
|
||||
def orders_per_drink(user) -> list:
|
||||
|
@ -148,4 +154,4 @@ def orders_per_drink(user) -> list:
|
|||
group by d.product_name
|
||||
order by "data" desc;
|
||||
""")
|
||||
return _combine_results([result_user, result_all])
|
||||
return _combine_results([result_all, result_user])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue