рассчитать еженедельные и ежемесячные продажи из ежедневных продаж - PullRequest
0 голосов
/ 31 января 2020

Если у меня ежедневные продажи, как мне показать еженедельные и ежемесячные продажи вместе с ежедневными в одной записи в oracle? Я могу рассчитать недельную сумму и месячную сумму в отдельных таблицах, но я хочу получить результаты в одном наборе данных.

Вывод должен выглядеть так, как показано ниже.

Date      Week  Month   Daily_Sale    Weekly_Sale Monthly_Sale
1/1/20      1      1        $5            $5          $5
1/2/20      1      1        $5            $10         $10
1/3/20      1      1        $1            $11         $11
1/4/20      1      1        $2            $13         $13
1/5/20      1      1        $5            $18         $18
1/6/20      1      1        $1            $19         $19
1/7/20      1      1        $1            $20         $20
1/8/20      2      1        $5            $5          $25
1/8/20      2      1        $5            $10         $30
1/10/20     2      1        $1            $11         $31
1/11/20     2      1        $2            $13         $33
1/12/20     2      1        $5            $18         $38
1/13/20     2      1        $1            $19         $39
1/14/20     2      1        $1            $20         $40

Спасибо!

Редактировать: Подсветка стола

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

У меня нет oracle компилятора, поэтому я скопировал сценарий в SSMS. Вот запрос:

SELECT T1.D1, T1.AnnualSales, T1.MonthlySales, T1.WeeklySales, T1.DailySales
 From
(SELECT [Date] As D1,
      Sum([Sales]) Over (Partition by Year(Date)) as AnnualSales,
      Sum([Sales]) Over (Partition by Month(Date)) as MonthlySales,
      Sum([Sales]) Over (Partition by Datepart(wk,Date)) as WeeklySales,
      Sum([Sales]) Over (Partition by Day(Date)) as DailySales
  FROM [dbo].[DailySales_Test]) AS T1
  Group by T1.D1, T1.AnnualSales, T1.MonthlySales, T1.WeeklySales, T1.DailySales
0 голосов
/ 01 февраля 2020

Кажется, вы хотите получить промежуточные итоги. Предполагая, что ваши таблицы содержат информацию о продажах более чем за один год, вам также необходимо разбить данные по годам.

select Date, extract(week from Date) Wk, extract(year from Date) Yr,
    Daily_Sale,
    sum(Daily_Sale) over (
        partition by extract(year from Date), extract(week from Date)
        order by Date
    ) as Weekly_Sale
    sum(Daily_Sale) over (
        partition by extract(year from Date), extract(month from Date)
        order by Date
    ) as Monthly_Sale
from T
order by Date;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...