# 結合テスト第一回
### PR60210(MC対象機種の抽出)
#### 機種コードが新旧機種マッピングに含まれる
```
select
count(*)
from (
select
product_code
from
data.d602100_mc_actual_sales_cleansed
group by
product_code
) t1
```
```
count
-------
60469
(1 row)
```
```
drop table IFI0070_MC_PRODUCT_GROUP_MAPPING;
create table IFI0070_MC_PRODUCT_GROUP_MAPPING(group_code CHAR(35) NOT NULL,product_code CHAR(35) NOT NULL,mc_start_date char(6),mc_end_date char(6),mc_response_end_date char(6),PRIMARY KEY(group_code, product_code));
\copy IFI0070_MC_PRODUCT_GROUP_MAPPING from '/storage/mdf/interface/ifin/IFI0070_MC_PRODUCT_GROUP_MAPPING.csv' with csv header;
select
count(*)
from (
select
product_code
from
data.d602100_mc_actual_sales_cleansed
group by
product_code
) t1
inner join (
select
product_code
from
IFI0070_MC_PRODUCT_GROUP_MAPPING
group by
product_code
) t2
using (
product_code
)
```
```
count
-------
60469
(1 row)
```
#### 実績データが存在する
```
drop table ifi0012_area_sales;
create table ifi0012_area_sales as (select * from ifi0012_area_sales_2022_it limit 0);
\copy ifi0012_area_sales from '/storage/mdf/interface/ifin/IFI0012_AREA_SALES.csv' with csv header;
select
count(*)
from (
select
product_code, area_code, kick_date as ymd, qty as sales_units
from
ifi0012_area_sales
group by
product_code, area_code, kick_date, qty
) t1
inner join (
select
product_code
from
IFI0070_MC_PRODUCT_GROUP_MAPPING
group by
product_code
) t2
using (
product_code
)
```
```
count
-------
96255
(1 row)
```
```
select
count(*)
from (
select
product_code, area_code, kick_date as ymd, qty as sales_units
from
ifi0012_area_sales
group by
product_code, area_code, kick_date, qty
) t1
inner join (
select
product_code
from
IFI0070_MC_PRODUCT_GROUP_MAPPING
group by
product_code
) t2
using (
product_code
)
inner join (
select
product_code, area_code, to_char(ymd, 'YYYYMMDD') as ymd, sales_units
from
data.d602100_mc_actual_sales_cleansed
group by
product_code, area_code, ymd, sales_units
) t3
using (
product_code, area_code, ymd, sales_units
)
```
```
count
-------
96255
(1 row)
```
### PR60210(差分追加)
```
select
count(*)
from (
select
product_code,
area_code,
min(ymd),
max_date,
(extract(year from age(max_date, min(ymd))) * 12 + extract(month from age(max_date, min(ymd)))) * 3 + extract(day from age(max_date, min(ymd))) / 10 + 1 as expected_ymd_counts,
count(*) as actual_ymd_counts
from (
select
product_code, area_code
from
ifi0012_area_sales
group by
product_code, area_code
) t1
inner join (
select
product_code
from
IFI0070_MC_PRODUCT_GROUP_MAPPING
group by
product_code
) t2
using (
product_code
)
inner join (
select
product_code, area_code, ymd, TO_DATE('2022-09-21', 'YYYY-MM-DD') as max_date
from
data.d602100_mc_actual_sales_cleansed
group by
product_code, area_code, ymd
) t3
using (
product_code, area_code
)
group by
product_code,
area_code,
max_date
) t
where
expected_ymd_counts != actual_ymd_counts
```
```
count
-------
0
(1 row)
```
### PR60260(グループ×エリア別集計:D602500, 品種/機種/機種×エリア別)
#### D602000に含まれる
```
select
count(*)
from (
select
sku_cd
from
data.d602500_actual_sales_monthly
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t
```
```
count
--------
567532
(1 row)
```
```
select
count(*)
from (
select
sku_cd
from
data.d602500_actual_sales_monthly
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t1
inner join (
select
sku_cd
from
data.d602000_actual_sales_cleansed
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t2
using (
sku_cd
)
```
```
count
--------
567532
(1 row)
```
#### D601100に品種が含まれる
```
select
count(*)
from (
select
split_part(sku_cd, '__', 2) as category_cd
from
data.d602500_actual_sales_monthly
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
category_cd
) t1
```
```
count
-------
952
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 2) as category_cd
from
data.d602500_actual_sales_monthly
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
category_cd
) t1
inner join (
select
category_cd
from
sysinf.d601100_category_list
group by
category_cd
) t2
using (
category_cd
)
```
```
count
-------
952
(1 row)
```
#### B区分またはC区分
```
select
count(*) as all_count,
sum(case when class = 'A' then 1 else 0 end) as a_count,
sum(case when class = 'B' or class = 'C' then 1 else 0 end) as bc_count
from (
select
sku_cd
from
data.d602500_actual_sales_monthly
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t1
inner join (
select
sku_cd,
class
from
sysinf.d602600_abc_class_list
group by
sku_cd,
class
) t2
using (
sku_cd
)
```
```
all_count | a_count | bc_count
-----------+---------+----------
567532 | 0 | 567532
(1 row)
```
#### 全SKUについて格納
```
select
count(*)
from (
select
sku_cd
from
data.d602000_actual_sales_cleansed
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t1
```
```
count
--------
569218
(1 row)
```
```
select
count(*)
from (
select
sku_cd
from
data.d602000_actual_sales_cleansed
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t1
inner join (
select
sku_cd
from
data.d602500_actual_sales_monthly
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
union
select
sku_cd
from
data.d602520_actual_sales_tendays
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t2
using (
sku_cd
)
```
```
count
--------
569218
(1 row)
```
### PR60260(グループ×エリア別集計:D602520, 品種/機種/機種×エリア別)
#### D602000に含まれる
```
select
count(*)
from (
select
sku_cd
from
data.d602520_actual_sales_tendays
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t
```
```
count
--------
1686
(1 row)
```
```
select
count(*)
from (
select
sku_cd
from
data.d602520_actual_sales_tendays
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t1
inner join (
select
sku_cd
from
data.d602000_actual_sales_cleansed
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t2
using (
sku_cd
)
```
```
count
--------
1686
(1 row)
```
#### D601100に品種が含まれる
```
select
count(*)
from (
select
split_part(sku_cd, '__', 2) as category_cd
from
data.d602520_actual_sales_tendays
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
category_cd
) t1
```
```
count
-------
105
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 2) as category_cd
from
data.d602520_actual_sales_tendays
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
category_cd
) t1
inner join (
select
category_cd
from
sysinf.d601100_category_list
group by
category_cd
) t2
using (
category_cd
)
```
```
count
-------
105
(1 row)
```
#### A区分
```
select
count(*) as all_count,
sum(case when class = 'A' then 1 else 0 end) as a_count,
sum(case when class = 'B' or class = 'C' then 1 else 0 end) as bc_count
from (
select
sku_cd
from
data.d602520_actual_sales_tendays
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
sku_cd
) t1
inner join (
select
sku_cd,
class
from
sysinf.d602600_abc_class_list
group by
sku_cd,
class
) t2
using (
sku_cd
)
```
```
all_count | a_count | bc_count
-----------+---------+----------
1686 | 1686 | 0
(1 row)
```
#### 全SKUについて格納
品種/機種/機種×エリア別集計:D602500で確認済みのため割愛
### PR60260(グループ×エリア別集計:D602500, グループ×エリア別)
#### グループ×機種マッピングに含まれる
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code
from
data.d602500_actual_sales_monthly
where
sku_cd like '4%'
group by
group_code
) t1
```
```
count
-------
3951
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code
from
data.d602500_actual_sales_monthly
where
sku_cd like '4%'
group by
group_code
) t1
inner join (
select
group_code
from
data.d601200_mc_product_group_mapping
group by
group_code
) t2
using (
group_code
)
```
```
count
-------
3951
(1 row)
```
#### 1機種でも実績が存在する
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code
from
data.d602500_actual_sales_monthly
where
sku_cd like '4%'
group by
group_code
) as t1
```
```
count
-------
3951
(1 row)
```
#### 直近6ヶ月実績合計が機種別B区分最大値を下回る
```
select
division,
max(total_sales) as max_total_sales
from (
select
sku_cd
from
sysinf.d602600_abc_class_list
where
class = 'B'
and
sku_cd like '2%'
group by
sku_cd
) t1
inner join (
select
category_cd,
sku_cd,
sum(sales_units) as total_sales
from
data.d602000_actual_sales_cleansed
where
sku_cd like '2%'
and
ymd < '2022-04-01'
and
ymd >= '2021-10-01'
group by
category_cd,
sku_cd
) t2
using (
sku_cd
)
inner join (
select
category_cd,
division
from
sysinf.d601100_category_list
) t3
using (
category_cd
)
group by
division
order by
division
```
```
division | max_total_sales
--------------+-----------------
インテリア | 44100
エクステリア | 858
サッシドア | 26545
(3 rows)
```
```
with group_total_sales as (
select
sku_cd,
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code,
sum(sales_units) as total_sales
from
data.d602500_actual_sales_monthly
where
sku_cd like '4%'
and
'2021-10-01' <= ymd
and
ymd < '2022-04-01'
group by
sku_cd
)
select
division,
sku_cd,
total_sales as max_total_sales
from (
select
division,
max(total_sales) as total_sales
from group_total_sales t1
inner join (
select
group_code,
product_code
from
data.d601200_mc_product_group_mapping
group by
group_code,
product_code
) t2
using (
group_code
)
inner join (
select
split_part(sku_cd, '__', 2) as category_cd,
split_part(sku_cd, '__', 3) as product_code
from
sysinf.d602600_abc_class_list
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
split_part(sku_cd, '__', 2),
split_part(sku_cd, '__', 3)
) t3
using (
product_code
)
inner join (
select
category_cd,
division
from
sysinf.d601100_category_list
) t4
using (
category_cd
)
group by
division
) t5
inner join
group_total_sales t6
using (
total_sales
)
order by
division
```
```
division | sku_cd | max_total_sales
--------------+------------------------------------------------+-----------------
インテリア | 4__0__G_DD-YH065HJL-MDDH__C | 41649
エクステリア | 4__0__G_H-C511-PVAA__C | 839
サッシドア | 4__0__G_マ8ミ_トクチュウ__D | 1275
(3 rows)
```
#### 全グループ×エリアにつき実績が格納される
```
select
count(*)
from (
select
group_code
from
data.d602100_mc_actual_sales_cleansed
group by
group_code
) t1
```
```
count
-------
3952
(1 row)
```
```
select
count(*)
from (
select
group_code
from
data.d602100_mc_actual_sales_cleansed
group by
group_code
) t1
inner join (
select
split_part(sku_cd, '__', 3) as group_code
from
data.d602500_actual_sales_monthly
where
sku_cd like '4%'
group by
sku_cd
union
select
split_part(sku_cd, '__', 3) as group_code
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
group by
sku_cd
) t2
using (
group_code
)
```
```
count
-------
3952
(1 row)
```
### PR60260(グループ×エリア別集計:D602520, グループ×エリア別)
#### グループ×機種マッピングに含まれる
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
group by
group_code
) t1
```
```
count
-------
13
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
group by
group_code
) t1
inner join (
select
group_code
from
data.d601200_mc_product_group_mapping
group by
group_code
) t2
using (
group_code
)
```
```
count
-------
13
(1 row)
```
#### 1機種でも実績が存在する
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
group by
group_code
) as t1
```
```
count
-------
13
(1 row)
```
#### 直近6ヶ月実績合計が機種別B区分最大値を上回る
```
select
division,
max(total_sales) as max_total_sales
from (
select
sku_cd
from
sysinf.d602600_abc_class_list
where
class = 'B'
and
sku_cd like '2%'
group by
sku_cd
) t1
inner join (
select
category_cd,
sku_cd,
sum(sales_units) as total_sales
from
data.d602000_actual_sales_cleansed
where
sku_cd like '2%'
and
ymd < '2022-04-01'
and
ymd >= '2021-10-01'
group by
category_cd,
sku_cd
) t2
using (
sku_cd
)
inner join (
select
category_cd,
division
from
sysinf.d601100_category_list
) t3
using (
category_cd
)
group by
division
order by
division
```
```
division | max_total_sales
--------------+-----------------
インテリア | 44100
エクステリア | 858
サッシドア | 26545
(3 rows)
```
```
with group_total_sales as (
select
sku_cd,
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code,
sum(sales_units) as total_sales
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
and
'2021-10-01' <= true_ymd
and
true_ymd < '2022-04-01'
group by
sku_cd
)
select
division,
sku_cd,
total_sales as min_total_sales
from (
select
division,
min(total_sales) as total_sales
from group_total_sales t1
inner join (
select
group_code,
product_code
from
data.d601200_mc_product_group_mapping
group by
group_code,
product_code
) t2
using (
group_code
)
inner join (
select
split_part(sku_cd, '__', 2) as category_cd,
split_part(sku_cd, '__', 3) as product_code
from
sysinf.d602600_abc_class_list
where
sku_cd like '1%'
or
sku_cd like '2%'
or
sku_cd like '3%'
group by
split_part(sku_cd, '__', 2),
split_part(sku_cd, '__', 3)
) t3
using (
product_code
)
inner join (
select
category_cd,
division
from
sysinf.d601100_category_list
) t4
using (
category_cd
)
group by
division
) t5
inner join
group_total_sales t6
using (
total_sales
)
order by
division
```
```
division | sku_cd | min_total_sales
--------------+------------------------------------------------+-----------------
インテリア | 4__0__G_EG-YA055Z-MWG5__C | 44630
エクステリア | 4__0__G_H-C731-PVAA__D | 905
(2 rows)
```
#### 全グループ×エリアにつき実績が格納される
グループ×エリア別集計:D602500で確認済みのため割愛
### PR60260(グループ×エリア別集計:D602500, D602520)
#### (1)実績データの歯抜けがない
```
select
count(*)
from (
select
sku_cd,
min(ymd),
max_date,
(extract(year from age(max_date, min(ymd))) * 12 + extract(month from age(max_date, min(ymd)))) + 1 as expected_ymd_counts,
count(*) as actual_ymd_counts
from (
select
sku_cd, ymd, TO_DATE('2022-09-21', 'YYYY-MM-DD') as max_date
from
data.d602500_actual_sales_monthly
where
sku_cd like '4%'
group by
sku_cd, ymd
) t
group by
sku_cd,
max_date
) t
where
expected_ymd_counts != actual_ymd_counts
```
```
count
-------
0
(1 row)
```
```
select
count(*)
from (
select
sku_cd,
min(ymd),
max_date,
(extract(year from age(max_date, min(ymd))) * 12 + extract(month from age(max_date, min(ymd)))) * 3 + extract(day from age(max_date, min(ymd))) / 10 + 1 as expected_ymd_counts,
count(*) as actual_ymd_counts
from (
select
sku_cd, true_ymd as ymd, TO_DATE('2022-09-21', 'YYYY-MM-DD') as max_date
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
group by
sku_cd, true_ymd
) t
group by
sku_cd,
max_date
) t
where
expected_ymd_counts != actual_ymd_counts
```
```
count
-------
0
(1 row)
```
#### (2)D602500/D602520にSKUコードの重複がない
```
select
count(*)
from (
select
sku_cd
from
data.d602500_actual_sales_monthly
where
sku_cd like '4%'
group by
sku_cd
) t1
inner join (
select
sku_cd
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
group by
sku_cd
) t2
using (
sku_cd
)
```
```
count
-------
0
(1 row)
```
#### (3)グループ×エリア別集計の正しさを確認
```
select
*
from (
select
split_part(sku_cd, '__', 3) as product_code,
split_part(sku_cd, '__', 4) as area_code,
ymd,
sales_units
from
data.d602100_mc_actual_sales_cleansed
where
sku_cd like '3%'
and
'2022-03-01' <= ymd
and
ymd <= '2022-03-21'
and
sales_units > 0
) t1
inner join (
select
product_code
from
data.d601200_mc_product_group_mapping
where
group_code = 'G_BG-KA-MAFV'
group by
product_code
) t2
using (
product_code
)
where
area_code = 'A'
order by
product_code,
area_code,
ymd
```
```
product_code | area_code | ymd | sales_units
--------------+-----------+------------+-------------
BD-AJ-MAFV | A | 2022-03-01 | 2
BD-AJ-MAFV | A | 2022-03-11 | 10
BD-AJ-MAFV | A | 2022-03-21 | 10
BD-CJ-MAFV | A | 2022-03-01 | 8
BD-CJ-MAFV | A | 2022-03-21 | 1
BD-CL-MAFV | A | 2022-03-01 | 519
BD-CL-MAFV | A | 2022-03-11 | 297
BD-CL-MAFV | A | 2022-03-21 | 475
BD-DB-MAFV | A | 2022-03-01 | 200
BD-DB-MAFV | A | 2022-03-11 | 113
BD-DB-MAFV | A | 2022-03-21 | 146
BD-EA-MAFV | A | 2022-03-01 | 6
BD-EA-MAFV | A | 2022-03-21 | 3
BE-AG-MAFV | A | 2022-03-01 | 153
BE-AG-MAFV | A | 2022-03-11 | 57
BE-AG-MAFV | A | 2022-03-21 | 129
BE-AJ-MAFV | A | 2022-03-01 | 67
BE-AJ-MAFV | A | 2022-03-11 | 50
BE-AJ-MAFV | A | 2022-03-21 | 68
BE-CJ-MAFV | A | 2022-03-01 | 3
BE-CJ-MAFV | A | 2022-03-21 | 7
BE-CL-MAFV | A | 2022-03-01 | 153
BE-CL-MAFV | A | 2022-03-11 | 100
BE-CL-MAFV | A | 2022-03-21 | 144
BE-EA-MAFV | A | 2022-03-11 | 2
BE-EA-MAFV | A | 2022-03-21 | 3
BF-AJ-MAFV | A | 2022-03-11 | 4
BF-AJ-MAFV | A | 2022-03-21 | 7
BF-CL-MAFV | A | 2022-03-01 | 34
BF-CL-MAFV | A | 2022-03-11 | 40
BF-CL-MAFV | A | 2022-03-21 | 51
BF-EA-MAFV | A | 2022-03-01 | 4
BF-GA-MAFV | A | 2022-03-01 | 4
BF-GA-MAFV | A | 2022-03-11 | 1
BF-GA-MAFV | A | 2022-03-21 | 3
BG-CL-MAFV | A | 2022-03-01 | 5
BG-CL-MAFV | A | 2022-03-21 | 11
BL-AJ-MAFV | A | 2022-03-01 | 18
BL-AJ-MAFV | A | 2022-03-11 | 14
BL-AJ-MAFV | A | 2022-03-21 | 16
BL-CL-MAFV | A | 2022-03-01 | 5
BL-CL-MAFV | A | 2022-03-11 | 1
BL-CL-MAFV | A | 2022-03-21 | 5
BL-GA-MAFV | A | 2022-03-01 | 6
BL-GA-MAFV | A | 2022-03-11 | 1
BL-GA-MAFV | A | 2022-03-21 | 6
YY-CJ-MAFV | A | 2022-03-01 | 3
YY-CJ-MAFV | A | 2022-03-11 | 1
YY-CL-MAFV | A | 2022-03-01 | 2
YY-CL-MAFV | A | 2022-03-11 | 1
YY-CL-MAFV | A | 2022-03-21 | 12
YY-GA-MAFV | A | 2022-03-21 | 1
(52 rows)
```
```
select
sku_cd,
ymd,
sales_units
from
data.d602500_actual_sales_monthly
where
sku_cd like '4__0__G_BG-KA-MAFV__A%'
and
ymd = '2022-03-01'
```
```
sku_cd | ymd | sales_units
------------------------------------------------+------------+-------------
4__0__G_BG-KA-MAFV__A | 2022-03-01 | 2982
(1 row)
```
```
select
*
from (
select
split_part(sku_cd, '__', 3) as product_code,
split_part(sku_cd, '__', 4) as area_code,
ymd,
sales_units
from
data.d602100_mc_actual_sales_cleansed
where
sku_cd like '3%'
and
'2022-03-01' = ymd
and
sales_units > 0
) t1
inner join (
select
product_code
from
data.d601200_mc_product_group_mapping
where
group_code = 'G_8LHB02QP'
group by
product_code
) t2
using (
product_code
)
where
area_code = 'A'
order by
product_code,
area_code,
ymd
```
```
product_code | area_code | ymd | sales_units
--------------+-----------+------------+-------------
8LDA02RY | A | 2022-03-01 | 8
8LDA08RY | A | 2022-03-01 | 12
8LDA11RY | A | 2022-03-01 | 12
HB-D163-PERD | A | 2022-03-01 | 5
(4 rows)
```
```
select
sku_cd,
true_ymd,
sales_units
from
data.d602520_actual_sales_tendays
where
sku_cd like '4__0__G_8LHB02QP__A%'
and
true_ymd = '2022-03-01'
```
```
sku_cd | true_ymd | sales_units
------------------------------------------------+------------+-------------
4__0__G_8LHB02QP__A | 2022-03-01 | 37
(1 row)
```
### PR60260(過去実績最大値の取得:D603020)
```
select
count(*)
from (
select
sku_cd
from
data.d602520_actual_sales_tendays
group by
sku_cd
union
select
sku_cd
from
data.d602500_actual_sales_monthly
group by
sku_cd
) as t
```
```
count
--------
584783
(1 row)
```
```
select
count(sku_cd)
from
data.d603020_maximum_sales
```
```
count
--------
584783
(1 row)
```
```
select
sum(case when sales_units > max_sales_units then 1 else 0 end) as incorrect_count
from (
select
sku_cd,
DATE_TRUNC('month', true_ymd) as ymd,
sum(sales_units) as sales_units
from
data.d602520_actual_sales_tendays
group by
sku_cd,
DATE_TRUNC('month', true_ymd)
union
select
sku_cd,
ymd,
sales_units
from
data.d602500_actual_sales_monthly
) t1
inner join (
select
sku_cd,
max_sales_units
from
data.d603020_maximum_sales
) t2
using (
sku_cd
)
```
```
incorrect_count
-----------------
0
(1 row)
```
### PR60300
#### D602500 / D602520いずれかに実績データの存在する全SKUのレコードが存在
```
select
count(*)
from (
select
sku_cd
from
data.d602520_actual_sales_tendays
group by
sku_cd
union
select
sku_cd
from
data.d602500_actual_sales_monthly
group by
sku_cd
) t1
```
```
count
--------
584783
(1 row)
```
```
select
count(*)
from (
select
sku_cd
from
data.d602520_actual_sales_tendays
group by
sku_cd
union
select
sku_cd
from
data.d602500_actual_sales_monthly
group by
sku_cd
) t1
inner join (
select
sku_cd
from
sysinf.d603010_forecasting_methods
group by
sku_cd
) t2
using (
sku_cd
)
```
```
count
--------
584783
(1 row)
```
#### 期間6ヶ月以下or充填率10%以下のSKUが予測対象外と判定される。
```
select
count(*)
from (
select
sku_cd
from (
select
sku_cd,
count(*) as ymd_count,
sum(case when sales_units > 0 then 1 else 0 end) as positive_sales_records,
count(*) as sales_records
from
DATA.D602500_ACTUAL_SALES_MONTHLY
where
ymd < '2022-04-01'
group by
sku_cd
) as t
where
ymd_count <= 6
or
1.0 * positive_sales_records / sales_records <= 0.1
union
select
sku_cd
from (
select
sku_cd,
count(*) as ymd_count,
sum(case when sales_units > 0 then 1 else 0 end) as positive_sales_records,
count(*) as sales_records
from
DATA.D602520_ACTUAL_SALES_TENDAYS
where
ymd < '2022-04-01'
group by
sku_cd
) as t
where
ymd_count <= 6 * 3
or
1.0 * positive_sales_records / sales_records <= 0.1
) as t
```
```
count
--------
311913
(1 row)
```
```
select
count(*)
from (
select
sku_cd
from (
select
sku_cd,
count(*) as ymd_count,
sum(case when sales_units > 0 then 1 else 0 end) as positive_sales_records,
count(*) as sales_records
from
DATA.D602500_ACTUAL_SALES_MONTHLY
where
ymd < '2022-04-01'
group by
sku_cd
) as t
where
ymd_count <= 6
or
1.0 * positive_sales_records / sales_records <= 0.1
union
select
sku_cd
from (
select
sku_cd,
count(*) as ymd_count,
sum(case when sales_units > 0 then 1 else 0 end) as positive_sales_records,
count(*) as sales_records
from
DATA.D602520_ACTUAL_SALES_TENDAYS
where
ymd < '2022-04-01'
group by
sku_cd
) as t
where
ymd_count <= 6 * 3
or
1.0 * positive_sales_records / sales_records <= 0.1
) t1
inner join (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
not forecast_target
group by
sku_cd
) t2
using (
sku_cd
)
```
```
count
--------
311913
(1 row)
```
### PR60600(予測算出, D606000)
#### D603010において予測対象外でない全SKUの予測値が6ヶ月分存在
```
select
count(*)
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
group by
sku_cd
) t1
```
```
count
--------
272870
(1 row)
```
```
select
count(*)
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
group by
sku_cd
) t1
inner join (
select
sku_cd
from
forecast.d606000_sales_forecast
group by
sku_cd
) t2
using (
sku_cd
)
```
```
count
--------
272870
(1 row)
```
```
select
count(*)
from (
select
sku_cd,
min(ymd) as min_ymd,
max(ymd) as max_ymd,
count(*) as ymd_count
from
forecast.d606000_sales_forecast
group by
sku_cd
) as t
where
min_ymd != '2022-04-01'
or
max_ymd != '2022-09-01'
or
ymd_count != 6
```
```
count
-------
0
(1 row)
```
### PR60600(ピックベスト, D606020)
#### D603010において予測対象外でない全SKUのレコードが存在
```
select
count(*)
from (
select
sku_cd
from
model.D606020_method_selection
group by
sku_cd
) t1
```
```
count
--------
272870
(1 row)
```
```
select
count(*)
from (
select
sku_cd
from
model.D606020_method_selection
group by
sku_cd
) t1
inner join (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
group by
sku_cd
) t2
using (
sku_cd
)
```
```
count
--------
272870
(1 row)
```
#### 予測成否(judgement)がすべて1
```
select
count(*) as count,
sum(case when judgement then 1 else 0 end) as success_count
from
model.D606020_method_selection
```
```
count | success_count
--------+---------------
272870 | 272870
(1 row)
```
#### 最終選択手法(final_method)にen, ts, es, lt, nvすべての手法が現れる。
```
select
count(*) as count,
sum(case when final_method = 'en' then 1 else 0 end) as en_count,
sum(case when final_method = 'ts' then 1 else 0 end) as ts_count,
sum(case when final_method = 'es' then 1 else 0 end) as es_count,
sum(case when final_method = 'lt' then 1 else 0 end) as lt_count,
sum(case when final_method = 'nv' then 1 else 0 end) as nv_count
from
model.D606020_method_selection
```
```
count | en_count | ts_count | es_count | lt_count | nv_count
--------+----------+----------+----------+----------+----------
272870 | 133148 | 8499 | 13420 | 113463 | 4340
(1 row)
```
### PR60810(構成比率按分, D608210)
#### 新旧予測配分表(IFI0071)に存在する機種・エリアである
```
drop table IFI0071_MC_PRODUCT_FORECAST_ALLOCATION;
create table IFI0071_MC_PRODUCT_FORECAST_ALLOCATION(group_code CHAR(35) NOT NULL,product_code CHAR(35) NOT NULL,area_code char(1),ym char(6),component_ratio double precision,type char(1), PRIMARY KEY(group_code, product_code, area_code, ym));
\copy IFI0071_MC_PRODUCT_FORECAST_ALLOCATION from '/storage/mdf/interface/ifin/IFI0071_MC_PRODUCT_FORECAST_ALLOCATION.csv' with csv header;
```
```
select
count(*)
from (
select
product_code,
area_code
from
forecast.d608210_mc_area_forecast_adjusted
group by
product_code,
area_code
) t1
```
```
count
--------
343821
(1 row)
```
```
select
count(*)
from (
select
product_code,
area_code
from
forecast.d608210_mc_area_forecast_adjusted
group by
product_code,
area_code
) t1
inner join (
select
product_code,
area_code
from
ifi0071_mc_product_forecast_allocation
group by
product_code,
area_code
) t2
using (
product_code,
area_code
)
```
```
count
--------
343821
(1 row)
```
```
select
count(*)
from (
select
product_code,
area_code,
count(*) as ymd_count
from
forecast.d608210_mc_area_forecast_adjusted
group by
product_code,
area_code
) t
where
ymd_count < 5
```
```
count
-------
0
(1 row)
```
#### グループ別予測対象外でない全機種・エリアの予測値が存在する
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
sku_cd like '4%'
group by
group_code,
area_code
) t1
inner join (
select
group_code,
product_code,
area_code
from
ifi0071_mc_product_forecast_allocation
group by
group_code,
product_code,
area_code
) t2
using (
group_code,
area_code
)
```
```
count
--------
343821
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
sku_cd like '4%'
group by
group_code,
area_code
) t1
inner join (
select
group_code,
product_code,
area_code
from
ifi0071_mc_product_forecast_allocation
group by
group_code,
product_code,
area_code
) t2
using (
group_code,
area_code
)
inner join (
select
product_code,
area_code
from
forecast.d608210_mc_area_forecast_adjusted
group by
product_code,
area_code
) t3
using (
product_code,
area_code
)
```
```
count
--------
343821
(1 row)
```
### PR60811(構成比率按分, D608211)
#### 新旧予測配分表(IFI0071)に存在する機種・エリアである
```
select
count(*)
from (
select
product_code,
area_code
from
forecast.D608211_MC_AREA_FORECAST_ADJUSTED_ON_DATE
group by
product_code,
area_code
) t1
```
```
count
--------
343821
(1 row)
```
```
select
count(*)
from (
select
product_code,
area_code
from
forecast.D608211_MC_AREA_FORECAST_ADJUSTED_ON_DATE
group by
product_code,
area_code
) t1
inner join (
select
product_code,
area_code
from
ifi0071_mc_product_forecast_allocation
group by
product_code,
area_code
) t2
using (
product_code,
area_code
)
```
```
count
--------
343821
(1 row)
```
```
select
count(*)
from (
select
product_code,
area_code,
count(*) as ymd_count
from
forecast.D608211_MC_AREA_FORECAST_ADJUSTED_ON_DATE
group by
product_code,
area_code
) t
where
ymd_count < 6
```
```
count
-------
0
(1 row)
```
#### グループ別予測対象外でない全機種・エリアの予測値が存在する
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
sku_cd like '4%'
group by
group_code,
area_code
) t1
inner join (
select
group_code,
product_code,
area_code
from
ifi0071_mc_product_forecast_allocation
group by
group_code,
product_code,
area_code
) t2
using (
group_code,
area_code
)
```
```
count
--------
343821
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
sku_cd like '4%'
group by
group_code,
area_code
) t1
inner join (
select
group_code,
product_code,
area_code
from
ifi0071_mc_product_forecast_allocation
group by
group_code,
product_code,
area_code
) t2
using (
group_code,
area_code
)
inner join (
select
product_code,
area_code
from
forecast.D608211_MC_AREA_FORECAST_ADJUSTED_ON_DATE
group by
product_code,
area_code
) t3
using (
product_code,
area_code
)
```
```
count
--------
343821
(1 row)
```
### PR60830(機種エリア積み上げ, D608220)
#### 新旧予測配分表(IFI0071)に存在する機種である
```
select
count(*)
from (
select
product_code
from
forecast.D608220_MC_PRODUCT_FORECAST_ADJUSTED
group by
product_code
) t1
```
```
count
--------
62863
(1 row)
```
```
select
count(*)
from (
select
product_code
from
forecast.D608220_MC_PRODUCT_FORECAST_ADJUSTED
group by
product_code
) t1
inner join (
select
product_code
from
ifi0071_mc_product_forecast_allocation
group by
product_code
) t2
using (
product_code
)
```
```
count
--------
62863
(1 row)
```
```
select
count(*)
from (
select
product_code,
count(*) as ymd_count
from
forecast.D608220_MC_PRODUCT_FORECAST_ADJUSTED
group by
product_code
) t
where
ymd_count != 6
```
```
count
-------
0
(1 row)
```
#### 「全エリアがグループ別予測対象外」でない全機種の予測値が存在する
```
with valid_product_codes as (
/* product_code × area_codeとgroup_codeは1対多にならない(複数グループに振り分けられる機種はない)前提 */
select
product_code
from (
select
product_code,
sum(case when is_joined is null then 0 else 1 end) as join_count
from (
select
group_code,
product_code,
area_code
from
ifi0071_mc_product_forecast_allocation
group by
group_code,
product_code,
area_code
) t1
left outer join (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code,
1 as is_joined
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
sku_cd like '4%'
group by
group_code,
area_code
) t2
using (
group_code,
area_code
)
group by
product_code
) t
where
join_count > 0
)
select
count(*)
from
valid_product_codes
```
```
count
-------
62863
(1 row)
```
```
with valid_product_codes as (
/* product_code × area_codeとgroup_codeは1対多にならない(複数グループに振り分けられる機種はない)前提 */
select
product_code
from (
select
product_code,
sum(case when is_joined is null then 0 else 1 end) as join_count
from (
select
group_code,
product_code,
area_code
from
ifi0071_mc_product_forecast_allocation
group by
group_code,
product_code,
area_code
) t1
left outer join (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code,
1 as is_joined
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
sku_cd like '4%'
group by
group_code,
area_code
) t2
using (
group_code,
area_code
)
group by
product_code
) t
where
join_count > 0
)
select
count(*)
from
valid_product_codes
inner join (
select
product_code
from
forecast.D608220_MC_PRODUCT_FORECAST_ADJUSTED
group by
product_code
) t3
using (
product_code
)
```
```
count
-------
62863
(1 row)
```
#### 集計結果の正しさを確認
```
select
*
from
forecast.D608211_MC_AREA_FORECAST_ADJUSTED_ON_DATE
where
product_code = '4トア_トクチュウ'
and
ymd = '2022-04-01'
```
```
store_cd | product_code | area_code | ymd | sales_forecast
----------+-------------------------------------+-----------+------------+--------------------
0 | 4トア_トクチュウ | A | 2022-04-01 | 317.884313754
0 | 4トア_トクチュウ | B | 2022-04-01 | 184.958823546
0 | 4トア_トクチュウ | C | 2022-04-01 | 1810.5267975479999
0 | 4トア_トクチュウ | D | 2022-04-01 | 1315.554248484
0 | 4トア_トクチュウ | E | 2022-04-01 | 367.43986931399996
0 | 4トア_トクチュウ | F | 2022-04-01 | 443.667973896
(6 rows)
```
```
select
*
from
forecast.D608220_MC_PRODUCT_FORECAST_ADJUSTED
where
product_code = '4トア_トクチュウ'
and
ymd = '2022-04-01'
```
```
store_cd | product_code | ymd | sales_forecast
----------+-------------------------------------+------------+--------------------
0 | 4トア_トクチュウ | 2022-04-01 | 4440.0320265420005
(1 row)
```
### PR60831(品種機種積み上げ, D608221)
#### 品種機種対応表(IFI0072)に存在するすべての品種の予測値が存在する
```
select
count(*)
from (
select
product_category_3 as category_cd
from
ifi0072_mc_product_category_mapping
group by
product_category_3
) t1
```
```
count
-------
54
(1 row)
```
```
select
count(*)
from (
select
product_category_3 as category_cd
from
ifi0072_mc_product_category_mapping
group by
product_category_3
) t1
inner join (
select
category_cd
from
forecast.D608221_MC_CATEGORY_FORECAST_ADJUSTED
group by
category_cd
) t2
using (
category_cd
)
```
```
count
-------
54
(1 row)
```
```
select
count(*)
from (
select
category_cd,
count(*) as ymd_count
from
forecast.D608221_MC_CATEGORY_FORECAST_ADJUSTED
group by
category_cd
) t
where
ymd_count != 6
```
```
count
-------
0
(1 row)
```
#### 集計結果の正しさを確認
##### MC対象の機種として通常予測値が存在するケース
```
select
*
from
forecast.D608111_PRODUCT_FORECAST_ADJUSTED
where
category_cd = '4トニ'
and
ymd = '2022-04-01'
and
sales_forecast > 0
```
```
store_cd | sku_cd | category_cd | product_code | ymd | sales_forecast
----------+------------------------------------------------+-------------+-------------------------------------+------------+----------------
0 | 2__4トニ__4トニ_トクチュウ__0 | 4トニ | 4トニ_トクチュウ | 2022-04-01 | 1070
0 | 2__4トニ__PP-AD08K-MEL9__0 | 4トニ | PP-AD08K-MEL9 | 2022-04-01 | 2916
```
```
select
*
from (
select
*
from
forecast.D608220_MC_PRODUCT_FORECAST_ADJUSTED
) t1
inner join (
select
product_category_3 as category_cd,
product_code
from
ifi0072_mc_product_category_mapping
) t2
using (
product_code
)
where
category_cd = '4トニ'
and
ymd = '2022-04-01'
and (
sales_forecast > 0
or
product_code in ('PP-AD08K-MEL9', '4トニ_トクチュウ')
)
```
```
product_code | store_cd | ymd | sales_forecast | category_cd
-------------------------------------+----------+------------+--------------------+-------------
4トニ_トクチュウ | 0 | 2022-04-01 | 1024.16901504 | 4トニ
DB-AA08H-MEE9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DB-AA08H-MMT9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
DB-AA08K-MEM9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DC-AA08H-MEE9 | 0 | 2022-04-01 | 4.9765270080000015 | 4トニ
DC-AA08K-MEM9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DC-AA08K-MEP9 | 0 | 2022-04-01 | 4.9765270080000015 | 4トニ
DD-AA08H-MDY9 | 0 | 2022-04-01 | 12.938967168000001 | 4トニ
DD-AA08H-MEN9 | 0 | 2022-04-01 | 5.9718313919999995 | 4トニ
DD-AA08H-MMS9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
DD-AA08K-MEL9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DD-AA08K-MEN9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DD-AB08H-MDY9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DD-AB08H-MEN9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DD-AD08H-MDY9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DD-AD08K-MEL9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DD-AE08H-MDY9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DD-AP08H-MEN9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DD-AP08H-MMV9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
DD-GD08K-MENF | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DD-GF08KL-MDYD | 0 | 2022-04-01 | 1.990611312 | 4トニ
DE-AA08H-MMT9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
DD-GF08KR-MDYD | 0 | 2022-04-01 | 1.990611312 | 4トニ
DE-AA08K-MEE9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DK-AA08H-MEP9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DG-AA08K-MEE9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DG-AA08K-MEM9 | 0 | 2022-04-01 | 4.9765270080000015 | 4トニ
DG-AA08K-MEP9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DG-AA08K-MMT9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
DG-AA08K-MMW9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DJ-AA08H-MEE9 | 0 | 2022-04-01 | 24.882629952 | 4トニ
DJ-AA08H-MEP9 | 0 | 2022-04-01 | 5.9718313919999995 | 4トニ
DE-AA08H-MEE9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DF-AA08K-MEE9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DG-AA08H-MEE9 | 0 | 2022-04-01 | 9.953051472 | 4トニ
DG-AA08H-MEP9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DH-AA08H-MEE9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DJ-AA08K-MEM9 | 0 | 2022-04-01 | 12.938967168000001 | 4トニ
DK-AA08K-MEE9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DK-AA08H-MEE9 | 0 | 2022-04-01 | 10.948355856 | 4トニ
DK-AA08K-MEM9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DL-AA08K-MEM9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DL-AA08K-MEP9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DL-AA08K-MMW9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DM-AA08H-MEE9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DM-AA08H-MEP9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DP-GA08H-MEEF | 0 | 2022-04-01 | 1.990611312 | 4トニ
DN-AA08H-MEE9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DR-AA08H-MEE9 | 0 | 2022-04-01 | 4.9765270080000015 | 4トニ
DS-AA08H-MEE9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DR-AA08K-MEE9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DR-AA08K-MEM9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
DR-AA08K-MEP9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DS-AA08K-MMT9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
DS-AA08K-MEE9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DS-AA08K-MEM9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
DS-AA08K-MEP9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DV-AA08H-MEE9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DT-AA08H-MEP9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DV-AA08H-MEP9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DV-AA08H-MMW9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
DX-GA08KL-MEMD | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DX-AA08H-MEE9 | 0 | 2022-04-01 | 13.934271552 | 4トニ
DX-AA08K-MEE9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DX-AA08K-MEM9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DX-AA08K-MEP9 | 0 | 2022-04-01 | 15.924882863999999 | 4トニ
DX-GA08K-MEPF | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DX-GA08KR-MEMD | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
LL-AB08H-MDY9 | 0 | 2022-04-01 | 6.967135776 | 4トニ
DY-AA08H-MEP9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DY-AA08H-MMW9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
DY-AA08K-MEM9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
DY-AA08K-MEP9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
DZ-GA08K-MEMF | 0 | 2022-04-01 | 0.995304384 | 4トニ
ED-AA08K-MEM9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
LL-AA08H-MDY9 | 0 | 2022-04-01 | 22.89201864 | 4トニ
LL-AA08H-MEN9 | 0 | 2022-04-01 | 36.826290192 | 4トニ
DY-AA08H-MEE9 | 0 | 2022-04-01 | 4.9765270080000015 | 4トニ
DZ-AA08H-MEE9 | 0 | 2022-04-01 | 4.9765270080000015 | 4トニ
DZ-AA08H-MEP9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
DZ-AA08K-MEE9 | 0 | 2022-04-01 | 5.9718313919999995 | 4トニ
DZ-AA08K-MEP9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
EF-AA08H-MEP9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
EF-AA08K-MEM9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
LL-AA08H-MMS9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
LL-AA08H-MMV9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
LL-AA08K-MDY9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
LL-AA08K-MEL9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
LL-AA08K-MEN9 | 0 | 2022-04-01 | 30.854461344 | 4トニ
LL-AA08K-MMV9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
LL-AB08K-MEL9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
LL-AB08H-MEN9 | 0 | 2022-04-01 | 12.938967168000001 | 4トニ
LL-AB08H-MMS9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
LL-AB08K-MDY9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
LL-AD08K-MMV9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
LL-GA08HR-MDYD | 0 | 2022-04-01 | 1.990611312 | 4トニ
LL-AF08H-MEN9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
LL-AF08K-MEN9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
LL-AD08K-MEL9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
LL-AD08K-MEN9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
LL-GA08H-MDYF | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
LL-GA08KL-MEND | 0 | 2022-04-01 | 1.990611312 | 4トニ
LL-GA08KR-MDYD | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
MM-AC08H-MDY9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
MM-AA08H-MDY9 | 0 | 2022-04-01 | 24.882629952 | 4トニ
MM-AA08H-MEN9 | 0 | 2022-04-01 | 16.920187247999998 | 4トニ
MM-AA08H-MMS9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
MM-AA08H-MMV9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
MM-AA08K-MDY9 | 0 | 2022-04-01 | 34.83568142400001 | 4トニ
LL-GB08HL-MDYD | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
MM-AA08K-MEL9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
MM-AA08K-MEN9 | 0 | 2022-04-01 | 26.87323872 | 4トニ
MM-AA08K-MMS9 | 0 | 2022-04-01 | 10.948355856 | 4トニ
MM-AB08H-MDY9 | 0 | 2022-04-01 | 7.962440160000001 | 4トニ
MM-AB08H-MEN9 | 0 | 2022-04-01 | 17.915494176000003 | 4トニ
MM-AB08H-MMS9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
MM-AB08K-MDY9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
MM-AB08K-MEL9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
MM-AB08K-MMS9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
MM-AD08H-MEN9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
MM-AD08K-MEN9 | 0 | 2022-04-01 | 6.967135776 | 4トニ
MM-AF08H-MEN9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
MM-GA08HR-MEND | 0 | 2022-04-01 | 1.990611312 | 4トニ
MM-AP08H-MDY9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
MM-AP08H-MEN9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
MM-AP08K-MEL9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
MM-GB08KL-MELD | 0 | 2022-04-01 | 0.995304384 | 4トニ
MM-GA08K-MELF | 0 | 2022-04-01 | 0.995304384 | 4トニ
MM-GB08KR-MELD | 0 | 2022-04-01 | 0.995304384 | 4トニ
PP-AA08H-MDY9 | 0 | 2022-04-01 | 45.78403728 | 4トニ
MM-GD08HR-MEND | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
MM-GD08KL-MDYD | 0 | 2022-04-01 | 5.9718313919999995 | 4トニ
MM-GD08KL-MELD | 0 | 2022-04-01 | 0.995304384 | 4トニ
PP-AA08H-MEN9 | 0 | 2022-04-01 | 32.845070112 | 4トニ
PP-AA08H-MMS9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
PP-AA08H-MMV9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
PP-AA08K-MDY9 | 0 | 2022-04-01 | 20.901407327999998 | 4トニ
PP-AE08H-MDY9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
PP-AA08K-MEL9 | 0 | 2022-04-01 | 5.9718313919999995 | 4トニ
PP-AA08K-MEN9 | 0 | 2022-04-01 | 11.943662783999999 | 4トニ
PP-AA08K-MMS9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
PP-AA08K-MMV9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
PP-AD08K-MDY9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
PP-AD08K-MEL9 | 0 | 2022-04-01 | 0 | 4トニ
PP-AB08H-MDY9 | 0 | 2022-04-01 | 24.882629952 | 4トニ
PP-AB08H-MEN9 | 0 | 2022-04-01 | 10.948355856 | 4トニ
PP-AB08H-MMS9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
PP-AB08H-MMV9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
PP-AB08K-MEL9 | 0 | 2022-04-01 | 5.9718313919999995 | 4トニ
PP-AC08H-MDY9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
PP-GD08HL-MEND | 0 | 2022-04-01 | 1.990611312 | 4トニ
PP-AF08H-MDY9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
PP-GA08HR-MEND | 0 | 2022-04-01 | 1.990611312 | 4トニ
PP-GA08KL-MELD | 0 | 2022-04-01 | 0.995304384 | 4トニ
PP-GA08KL-MEND | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
PP-GC08HL-MDYD | 0 | 2022-04-01 | 1.990611312 | 4トニ
WA-AB08H-MDY9 | 0 | 2022-04-01 | 20.901407327999998 | 4トニ
WA-AA08H-MDY9 | 0 | 2022-04-01 | 99.530517264 | 4トニ
WA-AA08H-MEN9 | 0 | 2022-04-01 | 68.67605592 | 4トニ
WA-AA08H-MMS9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
WA-AA08H-MMV9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
WA-AA08K-MDY9 | 0 | 2022-04-01 | 27.868545648 | 4トニ
PP-GD08HR-MEND | 0 | 2022-04-01 | 1.990611312 | 4トニ
WA-AA08K-MEL9 | 0 | 2022-04-01 | 15.924882863999999 | 4トニ
WA-AA08K-MEN9 | 0 | 2022-04-01 | 51.755868672000005 | 4トニ
WA-AA08K-MMS9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
WA-AA08K-MMV9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
WA-AB08H-MEN9 | 0 | 2022-04-01 | 3.9812200800000004 | 4トニ
WA-AB08H-MMS9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
WA-AB08H-MMV9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
WA-AB08K-MDY9 | 0 | 2022-04-01 | 14.929578480000002 | 4トニ
WA-AB08K-MEL9 | 0 | 2022-04-01 | 10.948355856 | 4トニ
WA-AB08K-MEN9 | 0 | 2022-04-01 | 14.929578480000002 | 4トニ
WA-AB08K-MMS9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
WA-AB08K-MMV9 | 0 | 2022-04-01 | 0.995304384 | 4トニ
WA-AD08K-MDY9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
WA-AP08K-MEL9 | 0 | 2022-04-01 | 1.990611312 | 4トニ
WA-GB08KL-MEND | 0 | 2022-04-01 | 0.995304384 | 4トニ
WA-AP08H-MDY9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
WA-GB08K-MMVD | 0 | 2022-04-01 | 0.995304384 | 4トニ
WA-GB08KR-MEND | 0 | 2022-04-01 | 0.995304384 | 4トニ
YY-GE08HL-MDYD | 0 | 2022-04-01 | 0.995304384 | 4トニ
YY-AA08H-MDY9 | 0 | 2022-04-01 | 117.44600889600001 | 4トニ
YY-AA08H-MEN9 | 0 | 2022-04-01 | 38.81690150400001 | 4トニ
YY-AA08H-MMS9 | 0 | 2022-04-01 | 13.934271552 | 4トニ
YY-AA08H-MMV9 | 0 | 2022-04-01 | 7.962440160000001 | 4トニ
YY-GC08KL-MELD | 0 | 2022-04-01 | 0.995304384 | 4トニ
YY-AA08K-MDY9 | 0 | 2022-04-01 | 58.723004448000005 | 4トニ
YY-AA08K-MEL9 | 0 | 2022-04-01 | 39.812205888 | 4トニ
YY-AA08K-MEN9 | 0 | 2022-04-01 | 25.877934336000003 | 4トニ
YY-AA08K-MMS9 | 0 | 2022-04-01 | 5.9718313919999995 | 4トニ
YY-AA08K-MMV9 | 0 | 2022-04-01 | 8.957747088000001 | 4トニ
YY-AC08H-MEN9 | 0 | 2022-04-01 | 2.9859156959999997 | 4トニ
YY-GE08H-MMSD | 0 | 2022-04-01 | 0.995304384 | 4トニ
YY-GE08HR-MDYD | 0 | 2022-04-01 | 0.995304384 | 4トニ
(195 rows)
```
```
select
*
from
forecast.D608221_MC_CATEGORY_FORECAST_ADJUSTED
where
category_cd = '4トニ'
and
ymd = '2022-04-01'
```
```
store_cd | category_cd | ymd | sales_forecast
----------+-------------+------------+--------------------
0 | 4トニ | 2022-04-01 | 2544.0000203520035
(1 row)
```
##### MC対象外の機種として通常予測値を利用するケース
```
select
product_code,
sales_forecast
from
forecast.D608111_PRODUCT_FORECAST_ADJUSTED
where
category_cd = '4トハ'
and
ymd = '2022-04-01'
and
sales_forecast > 0
```
```
product_code | sales_forecast
-------------------------------------+----------------
4トハ_トクチュウ | 14
LL-YB9996-MWBL | 1
(2 rows)
```
```
select
product_code,
sales_forecast
from (
select
*
from
forecast.D608220_MC_PRODUCT_FORECAST_ADJUSTED
) t1
inner join (
select
product_category_3 as category_cd,
product_code
from
ifi0072_mc_product_category_mapping
) t2
using (
product_code
)
where
category_cd = '4トハ'
and
ymd = '2022-04-01'
and (
sales_forecast > 0
or
product_code in ('4トハ_トクチュウ','LL-YB9996-MWBL')
)
```
```
product_code | sales_forecast
-------------------------------------+----------------
4トハ_トクチュウ | 18
(1 row)
```
```
select
*
from
forecast.D608221_MC_CATEGORY_FORECAST_ADJUSTED
where
category_cd = '4トハ'
and
ymd = '2022-04-01'
```
```
store_cd | category_cd | ymd | sales_forecast
----------+-------------+------------+----------------
0 | 4トハ | 2022-04-01 | 19
(1 row)
```
### PR60010(品種別予測値出力)
#### D603010において予測対象外でない全品種の予測値が存在する
```
create table ifo0010_category_sales_2022_it_forecast as (select * from ifi0010_category_sales_2022_it limit 0);
\copy ifo0010_category_sales_2022_it_forecast from '/storage/mdf/interface/ifout/forecast/IFO0010_CATEGORY_SALES_FORECAST_202204_01.csv' with csv header;
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 2) as category_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) = '1'
group by
category_cd
) t1
```
```
count
-------
859
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 2) as category_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) = '1'
group by
category_cd
) t1
inner join (
select
product_category_3 as category_cd
from
ifo0010_category_sales_2022_it_forecast
group by
category_cd
) t2
using (
category_cd
)
```
```
count
-------
859
(1 row)
```
### PR60010(機種別予測値出力)
#### D603010において予測対象外でない全機種の予測値が存在する
```
create table ifo0011_product_sales_2022_it_forecast as (select * from ifi0011_product_sales_2022_it limit 0);
\copy ifo0011_product_sales_2022_it_forecast from '/storage/mdf/interface/ifout/forecast/IFO0011_PRODUCT_SALES_FORECAST_202204_01.csv' with csv header;
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as product_code
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) = '2'
group by
product_code
) t1
```
```
count
-------
78820
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as product_code
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) = '2'
group by
product_code
) t1
inner join (
select
product_code
from
ifo0011_product_sales_2022_it_forecast
group by
product_code
) t2
using (
product_code
)
```
```
count
-------
78820
(1 row)
```
### PR60010(エリア別予測値出力)
#### D603010において予測対象外でない全機種×エリアの予測値が存在する
```
create table ifo0012_area_sales_forecast as (select * from ifi0012_area_sales_2022_it limit 0);
\copy ifo0012_area_sales_forecast from '/storage/mdf/interface/ifout/forecast/IFO0012_AREA_SALES_FORECAST_202204_01.csv' with csv header;
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as product_code,
split_part(sku_cd, '__', 4) as area_code
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) = '3'
group by
product_code,
area_code
) t1
```
```
count
--------
183895
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as product_code,
split_part(sku_cd, '__', 4) as area_code
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) = '3'
group by
product_code,
area_code
) t1
inner join (
select
product_code,
area_code
from
ifo0012_area_sales_forecast
group by
product_code,
area_code
) t2
using (
product_code,
area_code
)
```
```
count
--------
183895
(1 row)
```
### PR60011(グループ×エリア別予測値出力)
#### D603010において予測対象外でない全グループ×エリアの予測値が存在する
```
create table ifo0070_group_area_sales_forecast (group_code CHAR(35) NOT NULL, area_code CHAR(1) NOT NULL, kick_date CHAR(6) NOT NULL, qty double precision, PRIMARY KEY(group_code, area_code, kick_date));
\copy ifo0070_group_area_sales_forecast from '/storage/mdf/interface/ifout/forecast/IFO0070_GROUP_AREA_SALES_FORECAST_202204.csv' with csv header;
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) = '4'
group by
group_code,
area_code
) t1
```
```
count
--------
9296
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) = '4'
group by
group_code,
area_code
) t1
inner join (
select
group_code,
area_code
from
ifo0070_group_area_sales_forecast
group by
group_code,
area_code
) t2
using (
group_code,
area_code
)
```
```
count
--------
9296
(1 row)
```
### PR60031(予測対象外品リスト出力)
#### D603010のsku_cdと品種別/機種別/エリア別のIFが一致する。
```
create table IFO0020_CATEGORY_NOT_FORECAST (product_category_3 CHAR(3) NOT NULL, period int, density double precision);
\copy IFO0020_CATEGORY_NOT_FORECAST from '/storage/mdf/interface/ifout/na_list/IFO0020_CATEGORY_NOT_FORECAST_202204_01.csv' with csv header;
create table IFO0021_PRODUCT_NOT_FORECAST (product_category_3 CHAR(3) NOT NULL, product_code CHAR(35) NOT NULL, period int, density double precision);
\copy IFO0021_PRODUCT_NOT_FORECAST from '/storage/mdf/interface/ifout/na_list/IFO0021_PRODUCT_NOT_FORECAST_202204_01.csv' with csv header;
create table IFO0022_AREA_NOT_FORECAST (product_category_3 CHAR(3) NOT NULL, product_code CHAR(35) NOT NULL, area_code CHAR(1) NOT NULL, period int, density double precision);
\copy IFO0022_AREA_NOT_FORECAST from '/storage/mdf/interface/ifout/na_list/IFO0022_AREA_NOT_FORECAST_202204_01.csv' with csv header;
```
```
select
count(*)
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
split_part(sku_cd, '__', 1) != '4'
group by
sku_cd
) t1
```
```
count
--------
569218
(1 row)
```
```
select
count(*)
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
split_part(sku_cd, '__', 1) != '4'
group by
sku_cd
) t1
inner join (
select
'1' || '__' || product_category_3 || '__0__0' as sku_cd
from
ifo0010_category_sales_2022_it_forecast
group by
product_category_3
union
select
'1' || '__' || product_category_3 || '__0__0' as sku_cd
from
IFO0020_CATEGORY_NOT_FORECAST
group by
product_category_3
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd
from
ifo0011_product_sales_2022_it_forecast
group by
product_category_3,
product_code
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd
from
IFO0021_PRODUCT_NOT_FORECAST
group by
product_category_3,
product_code
union
select
'3' || '__' || product_category_3 || '__' || product_code || '__' || area_code as sku_cd
from
ifo0012_area_sales_forecast
group by
product_category_3,
product_code,
area_code
union
select
'3' || '__' || product_category_3 || '__' || product_code || '__' || area_code as sku_cd
from
IFO0022_AREA_NOT_FORECAST
group by
product_category_3,
product_code,
area_code
) t2
using (
sku_cd
)
```
```
count
--------
569218
(1 row)
```
### PR60050(予測手法IF出力)
#### 品種別/機種別/エリア別予測対象のskuが存在する。
```
create table IFO0030_CATEGORY_SELECTED_METHOD (product_category_3 CHAR(3), forecast_success int, forecast_type int, forecast_method char(2), validation_error double precision, ABC_class char(1));
\copy IFO0030_CATEGORY_SELECTED_METHOD from '/storage/mdf/interface/ifout/status/IFO0030_CATEGORY_SELECTED_METHOD_202204_01.csv' with csv header;
create table IFO0031_PRODUCT_SELECTED_METHOD (product_category_3 CHAR(3), product_code CHAR(35), forecast_success int, forecast_type int, forecast_method char(2), validation_error double precision, ABC_class char(1));
\copy IFO0031_PRODUCT_SELECTED_METHOD from '/storage/mdf/interface/ifout/status/IFO0031_PRODUCT_SELECTED_METHOD_202204_01.csv' with csv header;
create table IFO0032_AREA_SELECTED_METHOD (product_category_3 CHAR(3), product_code CHAR(35), area_code CHAR(1), forecast_success int, forecast_type int, forecast_method char(2), validation_error double precision, ABC_class char(1));
\copy IFO0032_AREA_SELECTED_METHOD from '/storage/mdf/interface/ifout/status/IFO0032_AREA_SELECTED_METHOD_202204_01.csv' with csv header;
```
```
select
count(*)
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) != '4'
group by
sku_cd
) t1
```
```
count
--------
263574
(1 row)
```
```
select
count(*)
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) != '4'
group by
sku_cd
) t1
inner join (
select
'1' || '__' || product_category_3 || '__0__0' as sku_cd
from
IFO0030_CATEGORY_SELECTED_METHOD
group by
product_category_3
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd
from
IFO0031_PRODUCT_SELECTED_METHOD
group by
product_category_3,
product_code
union
select
'3' || '__' || product_category_3 || '__' || product_code || '__' || area_code as sku_cd
from
IFO0032_AREA_SELECTED_METHOD
group by
product_category_3,
product_code,
area_code
) t2
using (
sku_cd
)
```
```
count
--------
263574
(1 row)
```
#### 予測成否が成功となっている。
```
select
count(*),
sum(forecast_success) as forecast_success_count
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) != '4'
group by
sku_cd
) t1
inner join (
select
'1' || '__' || product_category_3 || '__0__0' as sku_cd,
forecast_success
from
IFO0030_CATEGORY_SELECTED_METHOD
group by
product_category_3,
forecast_success
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd,
forecast_success
from
IFO0031_PRODUCT_SELECTED_METHOD
group by
product_category_3,
product_code,
forecast_success
union
select
'3' || '__' || product_category_3 || '__' || product_code || '__' || area_code as sku_cd,
forecast_success
from
IFO0032_AREA_SELECTED_METHOD
group by
product_category_3,
product_code,
area_code,
forecast_success
) t2
using (
sku_cd
)
```
```
count | forecast_success_count
--------+------------------------
263574 | 263574
(1 row)
```
#### 通常/MC対応予測比率が概ね予想通りになっている。
```
select
count(*),
sum(case when forecast_type = 1 then 1 else 0 end) as normal_forecast_count,
sum(case when forecast_type = 2 then 1 else 0 end) as mc_forecast_count
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) != '4'
group by
sku_cd
) t1
inner join (
select
'1' || '__' || product_category_3 || '__0__0' as sku_cd,
forecast_success,
forecast_type
from
IFO0030_CATEGORY_SELECTED_METHOD
group by
product_category_3,
forecast_success,
forecast_type
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd,
forecast_success,
forecast_type
from
IFO0031_PRODUCT_SELECTED_METHOD
group by
product_category_3,
product_code,
forecast_success,
forecast_type
union
select
'3' || '__' || product_category_3 || '__' || product_code || '__' || area_code as sku_cd,
forecast_success,
forecast_type
from
IFO0032_AREA_SELECTED_METHOD
group by
product_category_3,
product_code,
area_code,
forecast_success,
forecast_type
) t2
using (
sku_cd
)
```
```
count | normal_forecast_count | mc_forecast_count
--------+-----------------------+-------------------
263574 | 137616 | 125958
(1 row)
```
### PR60070(予測誤差IF出力)
#### 品種別/機種別/エリア別予測対象のskuが存在する。
```
product_category_3 CHAR(3), forecast_success int, forecast_type int, forecast_method char(2), validation_error double precision,ABC_class char(1)
create table IFO0040_CATEGORY_FORECAST_ERROR (
product_category_3 CHAR(3),
forecast_3month_total double precision,
qty_3month_total double precision,
error_3month_total double precision,
confidence_interval_upper double precision,
confidence_interval_lower double precision,
error_distribution_median double precision,
error_distribution_mean double precision,
error_distribution_std double precision,
error_distribution_n int,
forecast_date char(6)
);
\copy IFO0040_CATEGORY_FORECAST_ERROR from '/storage/mdf/interface/ifout/accuracy/IFO0040_CATEGORY_FORECAST_ERROR_202204_01.csv' with csv header;
create table IFO0041_PRODUCT_FORECAST_ERROR (
product_category_3 CHAR(3),
product_code CHAR(35),
forecast_3month_total double precision,
qty_3month_total double precision,
error_3month_total double precision,
confidence_interval_upper double precision,
confidence_interval_lower double precision,
error_distribution_median double precision,
error_distribution_mean double precision,
error_distribution_std double precision,
error_distribution_n int,
forecast_date char(6)
);
\copy IFO0041_PRODUCT_FORECAST_ERROR from '/storage/mdf/interface/ifout/accuracy/IFO0041_PRODUCT_FORECAST_ERROR_202204_01.csv' with csv header;
create table IFO0042_AREA_FORECAST_ERROR (
product_category_3 CHAR(3),
product_code CHAR(35),
area_code CHAR(1),
forecast_3month_total double precision,
qty_3month_total double precision,
error_3month_total double precision,
confidence_interval_upper double precision,
confidence_interval_lower double precision,
error_distribution_median double precision,
error_distribution_mean double precision,
error_distribution_std double precision,
error_distribution_n int,
forecast_date char(6)
);
\copy IFO0042_AREA_FORECAST_ERROR from '/storage/mdf/interface/ifout/accuracy/IFO0042_AREA_FORECAST_ERROR_202204_01.csv' with csv header;
```
```
select
count(*)
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) != '4'
group by
sku_cd
) t1
```
```
count
--------
263574
(1 row)
```
```
select
count(*)
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) != '4'
group by
sku_cd
) t1
inner join (
select
'1' || '__' || product_category_3 || '__0__0' as sku_cd
from
IFO0040_CATEGORY_FORECAST_ERROR
group by
product_category_3
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd
from
IFO0041_PRODUCT_FORECAST_ERROR
group by
product_category_3,
product_code
union
select
'3' || '__' || product_category_3 || '__' || product_code || '__' || area_code as sku_cd
from
IFO0042_AREA_FORECAST_ERROR
group by
product_category_3,
product_code,
area_code
) t2
using (
sku_cd
)
```
```
count
--------
263574
(1 row)
```
#### 1月〜3月の実績値の合計を累積実績に格納
```
select
count(*)
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) != '4'
group by
sku_cd
) t1
inner join
data.D602000_ACTUAL_SALES_CLEANSED_3MONTHS t2
using (
sku_cd
)
inner join (
select
'1' || '__' || product_category_3 || '__0__0' as sku_cd,
qty_3month_total,
forecast_3month_total
from
IFO0040_CATEGORY_FORECAST_ERROR
group by
product_category_3,
qty_3month_total,
forecast_3month_total
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd,
qty_3month_total,
forecast_3month_total
from
IFO0041_PRODUCT_FORECAST_ERROR
group by
product_category_3,
product_code,
qty_3month_total,
forecast_3month_total
union
select
'3' || '__' || product_category_3 || '__' || product_code || '__' || area_code as sku_cd,
qty_3month_total,
forecast_3month_total
from
IFO0042_AREA_FORECAST_ERROR
group by
product_category_3,
product_code,
area_code,
qty_3month_total,
forecast_3month_total
) t3
using (
sku_cd,
qty_3month_total
)
```
```
count
--------
263574
(1 row)
```
#### 4月〜6月の予測値の合計を累積予測に格納
```
select
count(*)
from (
select
sku_cd
from
sysinf.d603010_forecasting_methods
where
forecast_target
and
split_part(sku_cd, '__', 1) != '4'
group by
sku_cd
) t1
inner join (
select
sku_cd,
round(sales_forecast) as sales_forecast
from (
select
sku_cd,
sum(sales_forecast) as sales_forecast
from
FORECAST.D608110_CATEGORY_FORECAST_ADJUSTED
where
'2022-04-01' <= ymd
and
ymd < '2022-07-01'
group by
sku_cd
union
select
sku_cd,
sum(sales_forecast) as sales_forecast
from
FORECAST.D608111_PRODUCT_FORECAST_ADJUSTED
where
'2022-04-01' <= ymd
and
ymd < '2022-07-01'
group by
sku_cd
union
select
sku_cd,
sum(sales_forecast) as sales_forecast
from
FORECAST.D608112_AREA_FORECAST_ADJUSTED
where
'2022-04-01' <= ymd
and
ymd < '2022-07-01'
group by
sku_cd
) t
) t2
using (
sku_cd
)
inner join (
select
sku_cd,
round(sales_forecast) as sales_forecast
from (
select
sku_cd,
sales_forecast
from
FORECAST.D607010_CATEGORY_FORECAST_ARCHIVE
where
'2022-04-01' = ymd
group by
sku_cd,
sales_forecast
union
select
sku_cd,
sales_forecast
from
FORECAST.D607011_PRODUCT_FORECAST_ARCHIVE
where
'2022-04-01' = ymd
group by
sku_cd,
sales_forecast
union
select
sku_cd,
sales_forecast
from
FORECAST.D607012_AREA_FORECAST_ARCHIVE
where
'2022-04-01' = ymd
group by
sku_cd,
sales_forecast
) t
) t3
using (
sku_cd,
sales_forecast
)
```
```
count
--------
263574
(1 row)
```