Mysql Функция СУММ с объединением и группировкой по неделям - PullRequest
0 голосов
/ 10 июля 2020

У меня есть две таблицы

1-я таблица Sales

   id   invoice_date      points 
------------------------------------------------
    1    2020-07-01       5
    2    2020-07-01       30
    3    2020-07-02       1
    4    2020-07-03       10
    5    2020-07-04       2.5
    6    2020-07-05       35
    7    2020-07-06       50
    8    2020-07-07       30.5

2-я таблица sales_details

id    sales_id      item        mrp     qty 
---------------------------------------------
1        1           A          200     1
2        1           B          300     2
3        2           C          2000    1
4        2           A          200     2
5        2           AB         800     3
6        3           C          2000    1
7        3           D          100     2
8        4           A          200     3
9        5           C          2000    4
10       5           D          100     1
11       6           B          300     1
12       7           A          200     1
13       8           B          300     1

Я хочу запросить, чтобы получить результат item count, mrp total, qty total from Table sales_details и points total from Table sales по неделям группировки. Я попытался выполнить следующий запрос, но получил неправильную сумму points столбец

SELECT sum(B.qty) as item_count,sum(B.mrp*B.qty) as mrp, DATE_ADD( DATE(A.invoice_date), INTERVAL (7 - DAYOFWEEK( A.invoice_date )) DAY) week_ending,sum(points) as points from sales A inner join
 sales_details B on A.id=B.sales_id where A.invoice_date>='2020-07-04' and A.invoice_date<='2020-07-07'  GROUP BY week_ending

и получил результат, а значение points неверно

item_count   mrp      week_ending        points
-----------------------------------------------
    5        8100      2020-07-04          5
    3        800       2020-07-11         115.5 

Фактический результат, который я хочу,

item_count   mrp      week_ending        points
-----------------------------------------------
    5        8100      2020-07-04          48.5
    3        800       2020-07-11         115.5 

пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 10 июля 2020

Вам просто нужно проверить свой фильтр дат. Также я не думаю, что ваш ожидаемый результат выглядит так, как вы имели в виду.

SELECT sum(B.qty) as item_count,sum(B.mrp*B.qty) as mrp, 
       DATE_ADD( DATE(A.invoice_date), INTERVAL (7 - DAYOFWEEK( A.invoice_date )) DAY) week_ending,
       sum(points) as points 
FROM sales A  
INNER JOIN sales_details B ON A.id=B.sales_id 
WHERE A.invoice_date>='2020-07-01'  -->Change this date to include all dates of week ending 2020-07-04. You are only including the 4th 
AND A.invoice_date<='2020-07-07'  
GROUP BY week_ending
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...