# 結合テスト第二回詳細確認結果
### PR60210(MC対象機種の抽出)
#### 機種コードが新旧機種マッピングに含まれる
```
select
count(*)
from (
select
product_code
from
data.d602100_mc_actual_sales_cleansed
group by
product_code
) t1
```
```
count
-------
61214
(1 row)
```
```
drop table IFI0070_MC_PRODUCT_GROUP_MAPPING_first;
drop table IFI0070_MC_PRODUCT_GROUP_MAPPING_second;
create table IFI0070_MC_PRODUCT_GROUP_MAPPING_first(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_first from '/storage/mdf/interface/ifin/IFI0070_MC_PRODUCT_GROUP_MAPPING_first.csv' with csv header;
create table IFI0070_MC_PRODUCT_GROUP_MAPPING_second(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_second from '/storage/mdf/interface/ifin/IFI0070_MC_PRODUCT_GROUP_MAPPING_second.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_first
group by
product_code
union
select
product_code
from
IFI0070_MC_PRODUCT_GROUP_MAPPING_second
group by
product_code
) t2
using (
product_code
)
```
```
count
-------
61214
(1 row)
```
#### 実績データが存在する
```
drop table ifi0012_area_sales;
create table ifi0012_area_sales(product_category_3 CHAR(3) NOT NULL,product_code CHAR(35) NOT NULL,area_code char(1),kick_date char(8),qty int,PRIMARY KEY(product_category_3, product_code, area_code, kick_date));
\copy ifi0012_area_sales from '/storage/mdf/interface/ifin/IFI0012_AREA_SALES.csv' with csv header;
create table
d602100_mc_actual_sales_cleansed_if_months
as (
select
product_code, area_code, to_char(ymd, 'YYYYMMDD') as ymd, sales_units
from
data.d602100_mc_actual_sales_cleansed
where
ymd >= '2022-03-01'
and
ymd < '2022-05-01'
group by
product_code, area_code, ymd, sales_units
);
```
```
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_second
group by
product_code
) t2
using (
product_code
)
```
```
count
-------
95015
(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_second
group by
product_code
) t2
using (
product_code
)
inner join (
select
product_code, area_code, ymd, sales_units
from
d602100_mc_actual_sales_cleansed_if_months
) t3
using (
product_code, area_code, ymd, sales_units
)
```
```
count
-------
95015
(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_second
group by
product_code
) t2
using (
product_code
)
inner join (
select
product_code, area_code, ymd, TO_DATE('2022-10-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, グループ×エリア別)
#### グループ×機種マッピングに含まれる
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
data.d602500_actual_sales_monthly
where
sku_cd like '4%'
group by
group_code,
area_code
) t1
```
```
count
-------
15572
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
data.d602500_actual_sales_monthly
where
sku_cd like '4%'
group by
group_code,
area_code
) t1
inner join (
select
group_code
from
data.d601200_mc_product_group_mapping
group by
group_code
) t2
using (
group_code
)
```
```
count
-------
15572
(1 row)
```
#### 1機種でも実績が存在する
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
data.d602500_actual_sales_monthly
where
sku_cd like '4%'
group by
group_code,
area_code
) as t1
```
```
count
-------
15572
(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-05-01'
and
ymd >= '2021-11-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
--------------+-----------------
インテリア | 45060
エクステリア | 834
サッシドア | 26632
(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-11-01' <= ymd
and
ymd < '2022-05-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_EG-YA055Z-MWG5__C | 43931
エクステリア | 4__0__G_H-C511-PVAA__C | 818
サッシドア | 4__0__G_マ8ミ_トクチュウ__D | 1224
(3 rows)
```
#### 全グループ×エリアにつき実績が格納される
```
select
count(*)
from (
select
group_code,
area_code
from
data.d602100_mc_actual_sales_cleansed
group by
group_code,
area_code
) t1
```
```
count
-------
15598
(1 row)
```
```
select
count(*)
from (
select
group_code,
area_code
from
data.d602100_mc_actual_sales_cleansed
group by
group_code,
area_code
) t1
inner join (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_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,
split_part(sku_cd, '__', 4) as area_code
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
group by
sku_cd
) t2
using (
group_code,
area_code
)
```
```
count
-------
15598
(1 row)
```
### PR60260(グループ×エリア別集計:D602520, グループ×エリア別)
#### グループ×機種マッピングに含まれる
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
group by
group_code,
area_code
) t1
```
```
count
-------
26
(1 row)
```
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
group by
group_code,
area_code
) t1
inner join (
select
group_code
from
data.d601200_mc_product_group_mapping
group by
group_code
) t2
using (
group_code
)
```
```
count
-------
26
(1 row)
```
#### 1機種でも実績が存在する
```
select
count(*)
from (
select
split_part(sku_cd, '__', 3) as group_code,
split_part(sku_cd, '__', 4) as area_code
from
data.d602520_actual_sales_tendays
where
sku_cd like '4%'
group by
group_code,
area_code
) as t1
```
```
count
-------
26
(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-05-01'
and
ymd >= '2021-11-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
--------------+-----------------
インテリア | 45060
エクステリア | 834
サッシドア | 26632
(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-11-01' <= true_ymd
and
true_ymd < '2022-05-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_DD-YH055HJ-MBAD__D | 55592
エクステリア | 4__0__G_H-C731-PVAA__D | 840
(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-10-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-10-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
--------
590023
(1 row)
```
```
select
count(sku_cd)
from
data.d603020_maximum_sales
```
```
count
--------
590023
(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)
```
### PR60810(構成比率按分, D608210)
#### 新旧予測配分表(IFI0071)に存在する機種・エリアである
```
drop table IFI0071_MC_PRODUCT_FORECAST_ALLOCATION_second;
create table IFI0071_MC_PRODUCT_FORECAST_ALLOCATION_second(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_second from '/storage/mdf/interface/ifin/IFI0071_MC_PRODUCT_FORECAST_ALLOCATION_second.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
--------
343600
(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_second
group by
product_code,
area_code
) t2
using (
product_code,
area_code
)
```
```
count
--------
343600
(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
*
from
forecast.d608210_mc_area_forecast_adjusted
where
ymd < '2022-05-01'
) t
```
```
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_second
group by
group_code,
product_code,
area_code
) t2
using (
group_code,
area_code
)
```
```
count
--------
343600
(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_second
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
--------
343600
(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
--------
343600
(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_second
group by
product_code,
area_code
) t2
using (
product_code,
area_code
)
```
```
count
--------
343600
(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
*
from
forecast.D608211_MC_AREA_FORECAST_ADJUSTED_ON_DATE
where
ymd < '2022-05-01'
) t
```
```
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_second
group by
group_code,
product_code,
area_code
) t2
using (
group_code,
area_code
)
```
```
count
--------
343600
(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_second
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
--------
343600
(1 row)
```
### PR60830(機種エリア積み上げ, D608220)
#### 新旧予測配分表(IFI0071)に存在する機種である
```
select
count(*)
from (
select
product_code
from
forecast.D608220_MC_PRODUCT_FORECAST_ADJUSTED
group by
product_code
) t1
```
```
count
--------
62810
(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_second
group by
product_code
) t2
using (
product_code
)
```
```
count
--------
62810
(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)
```
```
select
count(*)
from (
select
*
from
forecast.D608220_MC_PRODUCT_FORECAST_ADJUSTED
where
ymd < '2022-05-01'
) t
```
```
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_second
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
-------
62810
(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_second
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
-------
62810
(1 row)
```
#### 集計結果の正しさを確認
```
select
*
from
forecast.D608211_MC_AREA_FORECAST_ADJUSTED_ON_DATE
where
product_code = '4トア_トクチュウ'
and
ymd = '2022-05-01'
```
```
store_cd | product_code | area_code | ymd | sales_forecast
----------+-------------------------------------+-----------+------------+--------------------
0 | 4トア_トクチュウ | A | 2022-05-01 | 264.684967344
0 | 4トア_トクチュウ | B | 2022-05-01 | 208.42483661999998
0 | 4トア_トクチュウ | C | 2022-05-01 | 1373.8549020839998
0 | 4トア_トクチュウ | D | 2022-05-01 | 1177.6732027199998
0 | 4トア_トクチュウ | E | 2022-05-01 | 268.18300655999997
0 | 4トア_トクチュウ | F | 2022-05-01 | 409.999346442
(6 rows)
```
```
select
*
from
forecast.D608220_MC_PRODUCT_FORECAST_ADJUSTED
where
product_code = '4トア_トクチュウ'
and
ymd = '2022-05-01'
```
```
store_cd | product_code | ymd | sales_forecast
----------+-------------------------------------+------------+--------------------
0 | 4トア_トクチュウ | 2022-05-01 | 3702.8202617699994
(1 row)
```
### PR60831(品種機種積み上げ, D608221)
#### 品種機種対応表(IFI0072)に存在するすべての品種の予測値が存在する
```
create table IFI0072_MC_PRODUCT_CATEGORY_MAPPING_second(product_category_3 CHAR(3) NOT NULL,product_code CHAR(35) NOT NULL, PRIMARY KEY(product_category_3, product_code));
\copy IFI0072_MC_PRODUCT_CATEGORY_MAPPING_second from '/storage/mdf/interface/ifin/IFI0072_MC_PRODUCT_CATEGORY_MAPPING_second.csv' with csv header;
```
```
select
count(*)
from (
select
product_category_3 as category_cd
from
ifi0072_mc_product_category_mapping_second
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_second
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)
```
```
select
count(*)
from (
select
*
from
forecast.D608221_MC_CATEGORY_FORECAST_ADJUSTED
where
ymd < '2022-05-01'
) t
```
```
count
-------
0
(1 row)
```
#### 集計結果の正しさを確認
##### MC対象の機種として通常予測値が存在するケース
```
select
*
from
forecast.D608111_PRODUCT_FORECAST_ADJUSTED
where
category_cd = '4トニ'
and
ymd = '2022-05-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トニ_トクチュウ')
)
```
```
store_cd | sku_cd | category_cd | product_code | ymd | sales_forecast
----------+------------------------------------------------+-------------+-------------------------------------+------------+--------------------
0 | 2__4トニ__YY-AA9996-MDY9__0 | 4トニ | YY-AA9996-MDY9 | 2022-05-01 | 1
0 | 2__4トニ__DB-AA08H-MEE9__0 | 4トニ | DB-AA08H-MEE9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__4トニ_トクチュウ__0 | 4トニ | 4トニ_トクチュウ | 2022-05-01 | 835.7605641600001
0 | 2__4トニ__DB-AA08H-MMT9__0 | 4トニ | DB-AA08H-MMT9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__DB-AA08K-MEM9__0 | 4トニ | DB-AA08K-MEM9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DC-AA08H-MEE9__0 | 4トニ | DC-AA08H-MEE9 | 2022-05-01 | 4.061033831999999
0 | 2__4トニ__DD-AA08K-MEN9__0 | 4トニ | DD-AA08K-MEN9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DC-AA08K-MEM9__0 | 4トニ | DC-AA08K-MEM9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DC-AA08K-MEP9__0 | 4トニ | DC-AA08K-MEP9 | 2022-05-01 | 4.061033831999999
0 | 2__4トニ__DD-AD08H-MDY9__0 | 4トニ | DD-AD08H-MDY9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DD-AA08H-MDY9__0 | 4トニ | DD-AA08H-MDY9 | 2022-05-01 | 10.558685471999999
0 | 2__4トニ__DD-AB08H-MDY9__0 | 4トニ | DD-AB08H-MDY9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DD-AB08H-MEN9__0 | 4トニ | DD-AB08H-MEN9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DD-AD08K-MEL9__0 | 4トニ | DD-AD08K-MEL9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DD-AA08H-MEN9__0 | 4トニ | DD-AA08H-MEN9 | 2022-05-01 | 4.8732397679999995
0 | 2__4トニ__DD-AA08H-MMS9__0 | 4トニ | DD-AA08H-MMS9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__DD-AA08K-MEL9__0 | 4トニ | DD-AA08K-MEL9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DD-AE08H-MDY9__0 | 4トニ | DD-AE08H-MDY9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DD-AP08H-MEN9__0 | 4トニ | DD-AP08H-MEN9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DD-AP08H-MMV9__0 | 4トニ | DD-AP08H-MMV9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__DD-GD08K-MENF__0 | 4トニ | DD-GD08K-MENF | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DD-GF08KL-MDYD__0 | 4トニ | DD-GF08KL-MDYD | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DE-AA08H-MMT9__0 | 4トニ | DE-AA08H-MMT9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__DD-GF08KR-MDYD__0 | 4トニ | DD-GF08KR-MDYD | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DE-AA08K-MEE9__0 | 4トニ | DE-AA08K-MEE9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DF-AA08K-MEE9__0 | 4トニ | DF-AA08K-MEE9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DE-AA08H-MEE9__0 | 4トニ | DE-AA08H-MEE9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DG-AA08K-MEE9__0 | 4トニ | DG-AA08K-MEE9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DG-AA08H-MEE9__0 | 4トニ | DG-AA08H-MEE9 | 2022-05-01 | 8.122065588
0 | 2__4トニ__DG-AA08H-MEP9__0 | 4トニ | DG-AA08H-MEP9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DG-AA08K-MEM9__0 | 4トニ | DG-AA08K-MEM9 | 2022-05-01 | 4.061033831999999
0 | 2__4トニ__DG-AA08K-MEP9__0 | 4トニ | DG-AA08K-MEP9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DG-AA08K-MMT9__0 | 4トニ | DG-AA08K-MMT9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__DG-AA08K-MMW9__0 | 4トニ | DG-AA08K-MMW9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DH-AA08H-MEE9__0 | 4トニ | DH-AA08H-MEE9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DJ-AA08H-MEE9__0 | 4トニ | DJ-AA08H-MEE9 | 2022-05-01 | 20.305165008
0 | 2__4トニ__DJ-AA08H-MEP9__0 | 4トニ | DJ-AA08H-MEP9 | 2022-05-01 | 4.8732397679999995
0 | 2__4トニ__DK-AA08H-MEE9__0 | 4トニ | DK-AA08H-MEE9 | 2022-05-01 | 8.934271524
0 | 2__4トニ__DJ-AA08K-MEM9__0 | 4トニ | DJ-AA08K-MEM9 | 2022-05-01 | 10.558685471999999
0 | 2__4トニ__DK-AA08K-MEM9__0 | 4トニ | DK-AA08K-MEM9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DN-AA08H-MEE9__0 | 4トニ | DN-AA08H-MEE9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DL-AA08K-MEM9__0 | 4トニ | DL-AA08K-MEM9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DK-AA08H-MEP9__0 | 4トニ | DK-AA08H-MEP9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DK-AA08K-MEE9__0 | 4トニ | DK-AA08K-MEE9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DL-AA08K-MEP9__0 | 4トニ | DL-AA08K-MEP9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DL-AA08K-MMW9__0 | 4トニ | DL-AA08K-MMW9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DM-AA08H-MEE9__0 | 4トニ | DM-AA08H-MEE9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DM-AA08H-MEP9__0 | 4トニ | DM-AA08H-MEP9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DP-GA08H-MEEF__0 | 4トニ | DP-GA08H-MEEF | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DR-AA08H-MEE9__0 | 4トニ | DR-AA08H-MEE9 | 2022-05-01 | 4.061033831999999
0 | 2__4トニ__DV-AA08H-MMW9__0 | 4トニ | DV-AA08H-MMW9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__DR-AA08K-MEE9__0 | 4トニ | DR-AA08K-MEE9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DR-AA08K-MEM9__0 | 4トニ | DR-AA08K-MEM9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__DR-AA08K-MEP9__0 | 4トニ | DR-AA08K-MEP9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DS-AA08K-MEE9__0 | 4トニ | DS-AA08K-MEE9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DS-AA08K-MEM9__0 | 4トニ | DS-AA08K-MEM9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__DS-AA08K-MEP9__0 | 4トニ | DS-AA08K-MEP9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DS-AA08K-MMT9__0 | 4トニ | DS-AA08K-MMT9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__DS-AA08H-MEE9__0 | 4トニ | DS-AA08H-MEE9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DT-AA08H-MEP9__0 | 4トニ | DT-AA08H-MEP9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DV-AA08H-MEE9__0 | 4トニ | DV-AA08H-MEE9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DV-AA08H-MEP9__0 | 4トニ | DV-AA08H-MEP9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DX-GA08KL-MEMD__0 | 4トニ | DX-GA08KL-MEMD | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DX-AA08H-MEE9__0 | 4トニ | DX-AA08H-MEE9 | 2022-05-01 | 11.370891408000002
0 | 2__4トニ__DX-AA08K-MEE9__0 | 4トニ | DX-AA08K-MEE9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DX-AA08K-MEM9__0 | 4トニ | DX-AA08K-MEM9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DX-AA08K-MEP9__0 | 4トニ | DX-AA08K-MEP9 | 2022-05-01 | 12.995305356
0 | 2__4トニ__DX-GA08K-MEPF__0 | 4トニ | DX-GA08K-MEPF | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__DX-GA08KR-MEMD__0 | 4トニ | DX-GA08KR-MEMD | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DY-AA08H-MEE9__0 | 4トニ | DY-AA08H-MEE9 | 2022-05-01 | 4.061033831999999
0 | 2__4トニ__DY-AA08H-MEP9__0 | 4トニ | DY-AA08H-MEP9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DY-AA08H-MMW9__0 | 4トニ | DY-AA08H-MMW9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__DZ-AA08K-MEE9__0 | 4トニ | DZ-AA08K-MEE9 | 2022-05-01 | 4.8732397679999995
0 | 2__4トニ__DY-AA08K-MEM9__0 | 4トニ | DY-AA08K-MEM9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DY-AA08K-MEP9__0 | 4トニ | DY-AA08K-MEP9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__DZ-AA08K-MEP9__0 | 4トニ | DZ-AA08K-MEP9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__DZ-AA08H-MEE9__0 | 4トニ | DZ-AA08H-MEE9 | 2022-05-01 | 4.061033831999999
0 | 2__4トニ__DZ-GA08K-MEMF__0 | 4トニ | DZ-GA08K-MEMF | 2022-05-01 | 0.812205936
0 | 2__4トニ__DZ-AA08H-MEP9__0 | 4トニ | DZ-AA08H-MEP9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__ED-AA08K-MEM9__0 | 4トニ | ED-AA08K-MEM9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__LL-AA08H-MMS9__0 | 4トニ | LL-AA08H-MMS9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__EF-AA08H-MEP9__0 | 4トニ | EF-AA08H-MEP9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__EF-AA08K-MEM9__0 | 4トニ | EF-AA08K-MEM9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__LL-AA08H-MMV9__0 | 4トニ | LL-AA08H-MMV9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__LL-AA08H-MDY9__0 | 4トニ | LL-AA08H-MDY9 | 2022-05-01 | 18.680751060000002
0 | 2__4トニ__LL-AA08H-MEN9__0 | 4トニ | LL-AA08H-MEN9 | 2022-05-01 | 30.051642468
0 | 2__4トニ__LL-AA08K-MMV9__0 | 4トニ | LL-AA08K-MMV9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__LL-AA08K-MDY9__0 | 4トニ | LL-AA08K-MDY9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__LL-AA08K-MEL9__0 | 4トニ | LL-AA08K-MEL9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__LL-AA08K-MEN9__0 | 4トニ | LL-AA08K-MEN9 | 2022-05-01 | 25.178404776
0 | 2__4トニ__LL-AB08H-MDY9__0 | 4トニ | LL-AB08H-MDY9 | 2022-05-01 | 5.685445704000001
0 | 2__4トニ__LL-AB08H-MEN9__0 | 4トニ | LL-AB08H-MEN9 | 2022-05-01 | 10.558685471999999
0 | 2__4トニ__LL-AD08K-MEL9__0 | 4トニ | LL-AD08K-MEL9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__LL-AB08H-MMS9__0 | 4トニ | LL-AB08H-MMS9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__LL-AB08K-MDY9__0 | 4トニ | LL-AB08K-MDY9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__LL-AB08K-MEL9__0 | 4トニ | LL-AB08K-MEL9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__LL-AD08K-MEN9__0 | 4トニ | LL-AD08K-MEN9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__LL-AD08K-MMV9__0 | 4トニ | LL-AD08K-MMV9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__LL-AF08K-MEN9__0 | 4トニ | LL-AF08K-MEN9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__LL-GA08HR-MDYD__0 | 4トニ | LL-GA08HR-MDYD | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__LL-AF08H-MEN9__0 | 4トニ | LL-AF08H-MEN9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__LL-GA08H-MDYF__0 | 4トニ | LL-GA08H-MDYF | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__LL-GB08HL-MDYD__0 | 4トニ | LL-GB08HL-MDYD | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__LL-GA08KL-MEND__0 | 4トニ | LL-GA08KL-MEND | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__LL-GA08KR-MDYD__0 | 4トニ | LL-GA08KR-MDYD | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__MM-AB08H-MDY9__0 | 4トニ | MM-AB08H-MDY9 | 2022-05-01 | 6.497651640000001
0 | 2__4トニ__MM-AA08H-MDY9__0 | 4トニ | MM-AA08H-MDY9 | 2022-05-01 | 20.305165008
0 | 2__4トニ__MM-AA08H-MEN9__0 | 4トニ | MM-AA08H-MEN9 | 2022-05-01 | 13.807511292000001
0 | 2__4トニ__MM-AA08H-MMS9__0 | 4トニ | MM-AA08H-MMS9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__MM-AA08H-MMV9__0 | 4トニ | MM-AA08H-MMV9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__MM-AA08K-MDY9__0 | 4トニ | MM-AA08K-MDY9 | 2022-05-01 | 28.427230596
0 | 2__4トニ__MM-AA08K-MEL9__0 | 4トニ | MM-AA08K-MEL9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__MM-AA08K-MEN9__0 | 4トニ | MM-AA08K-MEN9 | 2022-05-01 | 21.929576880000003
0 | 2__4トニ__MM-AA08K-MMS9__0 | 4トニ | MM-AA08K-MMS9 | 2022-05-01 | 8.934271524
0 | 2__4トニ__MM-AB08H-MMS9__0 | 4トニ | MM-AB08H-MMS9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__MM-AB08K-MDY9__0 | 4トニ | MM-AB08K-MDY9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__MM-AB08K-MEL9__0 | 4トニ | MM-AB08K-MEL9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__MM-AB08K-MMS9__0 | 4トニ | MM-AB08K-MMS9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__MM-AB08H-MEN9__0 | 4トニ | MM-AB08H-MEN9 | 2022-05-01 | 14.619719304
0 | 2__4トニ__MM-AC08H-MDY9__0 | 4トニ | MM-AC08H-MDY9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__MM-AD08H-MEN9__0 | 4トニ | MM-AD08H-MEN9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__MM-AD08K-MEN9__0 | 4トニ | MM-AD08K-MEN9 | 2022-05-01 | 5.685445704000001
0 | 2__4トニ__MM-AF08H-MEN9__0 | 4トニ | MM-AF08H-MEN9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__MM-AP08H-MDY9__0 | 4トニ | MM-AP08H-MDY9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__MM-AP08H-MEN9__0 | 4トニ | MM-AP08H-MEN9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__MM-GA08K-MELF__0 | 4トニ | MM-GA08K-MELF | 2022-05-01 | 0.812205936
0 | 2__4トニ__MM-AP08K-MEL9__0 | 4トニ | MM-AP08K-MEL9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__MM-GB08KR-MELD__0 | 4トニ | MM-GB08KR-MELD | 2022-05-01 | 0.812205936
0 | 2__4トニ__MM-GA08HR-MEND__0 | 4トニ | MM-GA08HR-MEND | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__MM-GD08HR-MEND__0 | 4トニ | MM-GD08HR-MEND | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__MM-GB08KL-MELD__0 | 4トニ | MM-GB08KL-MELD | 2022-05-01 | 0.812205936
0 | 2__4トニ__MM-GD08KL-MDYD__0 | 4トニ | MM-GD08KL-MDYD | 2022-05-01 | 4.8732397679999995
0 | 2__4トニ__MM-GD08KL-MELD__0 | 4トニ | MM-GD08KL-MELD | 2022-05-01 | 0.812205936
0 | 2__4トニ__PP-AA08H-MMV9__0 | 4トニ | PP-AA08H-MMV9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__PP-AA08K-MDY9__0 | 4トニ | PP-AA08K-MDY9 | 2022-05-01 | 17.056337112
0 | 2__4トニ__PP-AA08H-MDY9__0 | 4トニ | PP-AA08H-MDY9 | 2022-05-01 | 37.361502120000004
0 | 2__4トニ__PP-AA08K-MEL9__0 | 4トニ | PP-AA08K-MEL9 | 2022-05-01 | 4.8732397679999995
0 | 2__4トニ__PP-AA08H-MEN9__0 | 4トニ | PP-AA08H-MEN9 | 2022-05-01 | 26.802816648
0 | 2__4トニ__PP-AA08K-MEN9__0 | 4トニ | PP-AA08K-MEN9 | 2022-05-01 | 9.746479535999999
0 | 2__4トニ__PP-AA08H-MMS9__0 | 4トニ | PP-AA08H-MMS9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__PP-AA08K-MMS9__0 | 4トニ | PP-AA08K-MMS9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__PP-AA08K-MMV9__0 | 4トニ | PP-AA08K-MMV9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__PP-AD08K-MDY9__0 | 4トニ | PP-AD08K-MDY9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__PP-AB08K-MEL9__0 | 4トニ | PP-AB08K-MEL9 | 2022-05-01 | 4.8732397679999995
0 | 2__4トニ__PP-AC08H-MDY9__0 | 4トニ | PP-AC08H-MDY9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__PP-AB08H-MDY9__0 | 4トニ | PP-AB08H-MDY9 | 2022-05-01 | 20.305165008
0 | 2__4トニ__PP-AB08H-MEN9__0 | 4トニ | PP-AB08H-MEN9 | 2022-05-01 | 8.934271524
0 | 2__4トニ__PP-AB08H-MMS9__0 | 4トニ | PP-AB08H-MMS9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__PP-AB08H-MMV9__0 | 4トニ | PP-AB08H-MMV9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__PP-GA08HR-MEND__0 | 4トニ | PP-GA08HR-MEND | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__PP-AF08H-MDY9__0 | 4トニ | PP-AF08H-MDY9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__PP-AE08H-MDY9__0 | 4トニ | PP-AE08H-MDY9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__PP-GA08KL-MELD__0 | 4トニ | PP-GA08KL-MELD | 2022-05-01 | 0.812205936
0 | 2__4トニ__PP-GA08KL-MEND__0 | 4トニ | PP-GA08KL-MEND | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__PP-GC08HL-MDYD__0 | 4トニ | PP-GC08HL-MDYD | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__PP-GD08HL-MEND__0 | 4トニ | PP-GD08HL-MEND | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__PP-GD08HR-MEND__0 | 4トニ | PP-GD08HR-MEND | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__WA-AA08H-MDY9__0 | 4トニ | WA-AA08H-MDY9 | 2022-05-01 | 81.220657956
0 | 2__4トニ__WA-AA08H-MEN9__0 | 4トニ | WA-AA08H-MEN9 | 2022-05-01 | 56.04225318
0 | 2__4トニ__WA-AB08H-MDY9__0 | 4トニ | WA-AB08H-MDY9 | 2022-05-01 | 17.056337112
0 | 2__4トニ__WA-AA08H-MMS9__0 | 4トニ | WA-AA08H-MMS9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__WA-AA08H-MMV9__0 | 4トニ | WA-AA08H-MMV9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__WA-AA08K-MDY9__0 | 4トニ | WA-AA08K-MDY9 | 2022-05-01 | 22.741784892
0 | 2__4トニ__WA-AA08K-MEL9__0 | 4トニ | WA-AA08K-MEL9 | 2022-05-01 | 12.995305356
0 | 2__4トニ__WA-AA08K-MEN9__0 | 4トニ | WA-AA08K-MEN9 | 2022-05-01 | 42.234741887999995
0 | 2__4トニ__WA-AB08K-MMS9__0 | 4トニ | WA-AB08K-MMS9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__WA-AB08K-MMV9__0 | 4トニ | WA-AB08K-MMV9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__WA-AA08K-MMS9__0 | 4トニ | WA-AA08K-MMS9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__WA-AA08K-MMV9__0 | 4トニ | WA-AA08K-MMV9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__WA-AB08H-MMS9__0 | 4トニ | WA-AB08H-MMS9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__WA-AB08H-MMV9__0 | 4トニ | WA-AB08H-MMV9 | 2022-05-01 | 0.812205936
0 | 2__4トニ__WA-AB08K-MDY9__0 | 4トニ | WA-AB08K-MDY9 | 2022-05-01 | 12.18309942
0 | 2__4トニ__WA-AB08K-MEL9__0 | 4トニ | WA-AB08K-MEL9 | 2022-05-01 | 8.934271524
0 | 2__4トニ__WA-AB08K-MEN9__0 | 4トニ | WA-AB08K-MEN9 | 2022-05-01 | 12.18309942
0 | 2__4トニ__WA-AB08H-MEN9__0 | 4トニ | WA-AB08H-MEN9 | 2022-05-01 | 3.2488258200000004
0 | 2__4トニ__WA-AD08K-MDY9__0 | 4トニ | WA-AD08K-MDY9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__WA-AP08H-MDY9__0 | 4トニ | WA-AP08H-MDY9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__YY-AA08H-MDY9__0 | 4トニ | YY-AA08H-MDY9 | 2022-05-01 | 95.840375184
0 | 2__4トニ__WA-AP08K-MEL9__0 | 4トニ | WA-AP08K-MEL9 | 2022-05-01 | 1.6244139479999997
0 | 2__4トニ__WA-GB08KL-MEND__0 | 4トニ | WA-GB08KL-MEND | 2022-05-01 | 0.812205936
0 | 2__4トニ__WA-GB08K-MMVD__0 | 4トニ | WA-GB08K-MMVD | 2022-05-01 | 0.812205936
0 | 2__4トニ__WA-GB08KR-MEND__0 | 4トニ | WA-GB08KR-MEND | 2022-05-01 | 0.812205936
0 | 2__4トニ__YY-GE08HL-MDYD__0 | 4トニ | YY-GE08HL-MDYD | 2022-05-01 | 0.812205936
0 | 2__4トニ__YY-AA08H-MEN9__0 | 4トニ | YY-AA08H-MEN9 | 2022-05-01 | 31.676056416
0 | 2__4トニ__YY-AA08H-MMS9__0 | 4トニ | YY-AA08H-MMS9 | 2022-05-01 | 11.370891408000002
0 | 2__4トニ__YY-AA08H-MMV9__0 | 4トニ | YY-AA08H-MMV9 | 2022-05-01 | 6.497651640000001
0 | 2__4トニ__YY-AA08K-MDY9__0 | 4トニ | YY-AA08K-MDY9 | 2022-05-01 | 47.920187592
0 | 2__4トニ__YY-AA08K-MEL9__0 | 4トニ | YY-AA08K-MEL9 | 2022-05-01 | 32.488262352
0 | 2__4トニ__YY-AC08H-MEN9__0 | 4トニ | YY-AC08H-MEN9 | 2022-05-01 | 2.4366198839999997
0 | 2__4トニ__YY-AA08K-MEN9__0 | 4トニ | YY-AA08K-MEN9 | 2022-05-01 | 21.117370943999997
0 | 2__4トニ__YY-AA08K-MMS9__0 | 4トニ | YY-AA08K-MMS9 | 2022-05-01 | 4.8732397679999995
0 | 2__4トニ__YY-AA08K-MMV9__0 | 4トニ | YY-AA08K-MMV9 | 2022-05-01 | 7.309859652
0 | 2__4トニ__YY-GC08KL-MELD__0 | 4トニ | YY-GC08KL-MELD | 2022-05-01 | 0.812205936
0 | 2__4トニ__YY-GE08H-MMSD__0 | 4トニ | YY-GE08H-MMSD | 2022-05-01 | 0.812205936
0 | 2__4トニ__YY-GE08HR-MDYD__0 | 4トニ | YY-GE08HR-MDYD | 2022-05-01 | 0.812205936
```
```
select
*
from
forecast.D608221_MC_CATEGORY_FORECAST_ADJUSTED
where
category_cd = '4トニ'
and
ymd = '2022-05-01'
```
```
store_cd | category_cd | ymd | sales_forecast
----------+-------------+------------+--------------------
0 | 4トニ | 2022-05-01 | 2077.0000166080017
(1 row)
```
### PR60010(品種別予測値出力)
#### D603010において予測対象外でない全品種の予測値が存在する
```
create table ifo0010_category_sales_2022_it_forecast_05(product_category_3 CHAR(3) NOT NULL,kick_date char(8),qty int,PRIMARY KEY(product_category_3, kick_date));
\copy ifo0010_category_sales_2022_it_forecast_05 from '/storage/mdf/interface/ifout/forecast/IFO0010_CATEGORY_SALES_FORECAST_202205_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
-------
869
(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_05
group by
category_cd
) t2
using (
category_cd
)
```
```
count
-------
869
(1 row)
```
### PR60010(機種別予測値出力)
#### D603010において予測対象外でない全機種の予測値が存在する
```
create table ifo0011_product_sales_2022_it_forecast_05(product_category_3 CHAR(3) NOT NULL,product_code CHAR(35) NOT NULL,kick_date char(8),qty double precision,PRIMARY KEY(product_category_3, product_code, kick_date));
\copy ifo0011_product_sales_2022_it_forecast_05 from '/storage/mdf/interface/ifout/forecast/IFO0011_PRODUCT_SALES_FORECAST_202205_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
-------
79035
(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_05
group by
product_code
) t2
using (
product_code
)
```
```
count
-------
79035
(1 row)
```
### PR60010(エリア別予測値出力)
#### D603010において予測対象外でない全機種×エリアの予測値が存在する
```
create table ifo0012_area_sales_forecast_05(product_category_3 CHAR(3) NOT NULL,product_code CHAR(35) NOT NULL,area_code char(1),kick_date char(8),qty double precision,PRIMARY KEY(product_category_3, product_code, area_code, kick_date));
\copy ifo0012_area_sales_forecast_05 from '/storage/mdf/interface/ifout/forecast/IFO0012_AREA_SALES_FORECAST_202205_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
--------
183840
(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_05
group by
product_code,
area_code
) t2
using (
product_code,
area_code
)
```
```
count
--------
183840
(1 row)
```
### PR60011(グループ×エリア別予測値出力)
#### D603010において予測対象外でない全グループ×エリアの予測値が存在する
```
create table ifo0070_group_area_sales_forecast_05 (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_05 from '/storage/mdf/interface/ifout/forecast/IFO0070_GROUP_AREA_SALES_FORECAST_202205.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
--------
9242
(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_05
group by
group_code,
area_code
) t2
using (
group_code,
area_code
)
```
```
count
--------
9242
(1 row)
```
### PR60031(予測対象外品リスト出力)
#### D603010のsku_cdと品種別/機種別/エリア別のIFが一致する。
```
create table IFO0020_CATEGORY_NOT_FORECAST_05 (product_category_3 CHAR(3) NOT NULL, period int, density double precision);
\copy IFO0020_CATEGORY_NOT_FORECAST_05 from '/storage/mdf/interface/ifout/na_list/IFO0020_CATEGORY_NOT_FORECAST_202205_01.csv' with csv header;
create table IFO0021_PRODUCT_NOT_FORECAST_05 (product_category_3 CHAR(3) NOT NULL, product_code CHAR(35) NOT NULL, period int, density double precision);
\copy IFO0021_PRODUCT_NOT_FORECAST_05 from '/storage/mdf/interface/ifout/na_list/IFO0021_PRODUCT_NOT_FORECAST_202205_01.csv' with csv header;
create table IFO0022_AREA_NOT_FORECAST_05 (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_05 from '/storage/mdf/interface/ifout/na_list/IFO0022_AREA_NOT_FORECAST_202205_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
--------
574425
(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_05
group by
product_category_3
union
select
'1' || '__' || product_category_3 || '__0__0' as sku_cd
from
IFO0020_CATEGORY_NOT_FORECAST_05
group by
product_category_3
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd
from
ifo0011_product_sales_2022_it_forecast_05
group by
product_category_3,
product_code
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd
from
IFO0021_PRODUCT_NOT_FORECAST_05
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_05
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_05
group by
product_category_3,
product_code,
area_code
) t2
using (
sku_cd
)
```
```
count
--------
574425
(1 row)
```
### PR60050(予測手法IF出力)
#### 品種別/機種別/エリア別予測対象のskuが存在する。
```
create table IFO0030_CATEGORY_SELECTED_METHOD_05 (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_05 from '/storage/mdf/interface/ifout/status/IFO0030_CATEGORY_SELECTED_METHOD_202205_01.csv' with csv header;
create table IFO0031_PRODUCT_SELECTED_METHOD_05 (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_05 from '/storage/mdf/interface/ifout/status/IFO0031_PRODUCT_SELECTED_METHOD_202205_01.csv' with csv header;
create table IFO0032_AREA_SELECTED_METHOD_05 (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_05 from '/storage/mdf/interface/ifout/status/IFO0032_AREA_SELECTED_METHOD_202205_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
--------
263744
(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_05
group by
product_category_3
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd
from
IFO0031_PRODUCT_SELECTED_METHOD_05
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_05
group by
product_category_3,
product_code,
area_code
) t2
using (
sku_cd
)
```
```
count
--------
263744
(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_05
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_05
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_05
group by
product_category_3,
product_code,
area_code,
forecast_success
) t2
using (
sku_cd
)
```
```
count | forecast_success_count
--------+------------------------
263744 | 263744
(1 row)
```
### PR60070(予測誤差IF出力)
#### 品種別/機種別/エリア別予測対象のskuが存在する。
```
create table IFO0040_CATEGORY_FORECAST_ERROR_05 (
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_05 from '/storage/mdf/interface/ifout/accuracy/IFO0040_CATEGORY_FORECAST_ERROR_202205_01.csv' with csv header;
create table IFO0041_PRODUCT_FORECAST_ERROR_05 (
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_05 from '/storage/mdf/interface/ifout/accuracy/IFO0041_PRODUCT_FORECAST_ERROR_202205_01.csv' with csv header;
create table IFO0042_AREA_FORECAST_ERROR_05 (
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_05 from '/storage/mdf/interface/ifout/accuracy/IFO0042_AREA_FORECAST_ERROR_202205_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
--------
263744
(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_05
group by
product_category_3
union
select
'2' || '__' || product_category_3 || '__' || product_code || '__' || '0' as sku_cd
from
IFO0041_PRODUCT_FORECAST_ERROR_05
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_05
group by
product_category_3,
product_code,
area_code
) t2
using (
sku_cd
)
```
```
count
--------
263744
(1 row)
```
#### 2月〜4月の実績値の合計を累積実績に格納
```
create table D602000_ACTUAL_SALES_CLEANSED_3MONTHS_second as (
select
*
from
data.D602000_ACTUAL_SALES_CLEANSED
where
ymd >= '2022-02-01'
and
ymd < '2022-05-01'
)
```
```
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,
sum(sales_units) as qty_3month_total
from
D602000_ACTUAL_SALES_CLEANSED_3MONTHS_SECOND
group by
sku_cd
) 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_05
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_05
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_05
group by
product_category_3,
product_code,
area_code,
qty_3month_total,
forecast_3month_total
) t3
using (
sku_cd,
qty_3month_total
)
```
```
count
--------
263744
(1 row)
```
#### 5月〜7月の予測値の合計を累積予測に格納
```
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-05-01' <= ymd
and
ymd < '2022-08-01'
group by
sku_cd
union
select
sku_cd,
sum(sales_forecast) as sales_forecast
from
FORECAST.D608111_PRODUCT_FORECAST_ADJUSTED
where
'2022-05-01' <= ymd
and
ymd < '2022-08-01'
group by
sku_cd
union
select
sku_cd,
sum(sales_forecast) as sales_forecast
from
FORECAST.D608112_AREA_FORECAST_ADJUSTED
where
'2022-05-01' <= ymd
and
ymd < '2022-08-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-05-01' = ymd
group by
sku_cd,
sales_forecast
union
select
sku_cd,
sales_forecast
from
FORECAST.D607011_PRODUCT_FORECAST_ARCHIVE
where
'2022-05-01' = ymd
group by
sku_cd,
sales_forecast
union
select
sku_cd,
sales_forecast
from
FORECAST.D607012_AREA_FORECAST_ARCHIVE
where
'2022-05-01' = ymd
group by
sku_cd,
sales_forecast
) t
) t3
using (
sku_cd,
sales_forecast
)
```
```
count
--------
263744
(1 row)
```