gate the row_number function so that only target rows are processes Actuals for sales and Quotes for quotes
This commit is contained in:
parent
8974095341
commit
f19bd138e3
@ -1,6 +1,6 @@
|
|||||||
REFRESH MATERIALIZED VIEW pricequote.lastpricedetail;
|
-- REFRESH MATERIALIZED VIEW pricequote.lastpricedetail;
|
||||||
|
|
||||||
--DROP MATERIALIZED VIEW pricequote.lastpricedetail
|
DROP MATERIALIZED VIEW pricequote.lastpricedetail;
|
||||||
|
|
||||||
CREATE MATERIALIZED VIEW pricequote.lastpricedetail AS
|
CREATE MATERIALIZED VIEW pricequote.lastpricedetail AS
|
||||||
WITH base AS (
|
WITH base AS (
|
||||||
@ -28,38 +28,38 @@ WITH base AS (
|
|||||||
ranked AS (
|
ranked AS (
|
||||||
SELECT b.*,
|
SELECT b.*,
|
||||||
-- Most recent sale (Actuals first, newest date first)
|
-- Most recent sale (Actuals first, newest date first)
|
||||||
ROW_NUMBER() OVER (
|
CASE WHEN version = 'Actual' THEN ROW_NUMBER() OVER (
|
||||||
PARTITION BY customer, partgroup
|
PARTITION BY customer, partgroup
|
||||||
ORDER BY (version = 'Actual') DESC,
|
ORDER BY (version = 'Actual') DESC,
|
||||||
odate DESC NULLS LAST
|
odate DESC NULLS LAST
|
||||||
) AS rn_mrs,
|
) END AS rn_mrs,
|
||||||
-- Most recent quote (Quotes first, newest date first)
|
-- Most recent quote (Quotes first, newest date first)
|
||||||
ROW_NUMBER() OVER (
|
CASE WHEN version = 'Quotes' THEN ROW_NUMBER() OVER (
|
||||||
PARTITION BY customer, partgroup
|
PARTITION BY customer, partgroup
|
||||||
ORDER BY (version = 'Quotes') DESC,
|
ORDER BY (version = 'Quotes') DESC,
|
||||||
odate DESC NULLS LAST
|
odate DESC NULLS LAST
|
||||||
) AS rn_mrq,
|
) END AS rn_mrq,
|
||||||
-- Largest volume sale in last year (those inside window first)
|
-- Largest volume sale in last year (those inside window first)
|
||||||
ROW_NUMBER() OVER (
|
CASE WHEN version = 'Actual' THEN ROW_NUMBER() OVER (
|
||||||
PARTITION BY customer, partgroup
|
PARTITION BY customer, partgroup
|
||||||
ORDER BY (version = 'Actual' AND odate >= CURRENT_DATE - INTERVAL '1 year') DESC,
|
ORDER BY (version = 'Actual' AND odate >= CURRENT_DATE - INTERVAL '1 year') DESC,
|
||||||
qty DESC NULLS LAST
|
qty DESC NULLS LAST
|
||||||
) AS rn_lvs,
|
) END AS rn_lvs,
|
||||||
-- Largest volume quote in last year (those inside window first)
|
-- Largest volume quote in last year (those inside window first)
|
||||||
ROW_NUMBER() OVER (
|
CASE WHEN version = 'Quotes' THEN ROW_NUMBER() OVER (
|
||||||
PARTITION BY customer, partgroup
|
PARTITION BY customer, partgroup
|
||||||
ORDER BY (version = 'Quotes' AND odate >= CURRENT_DATE - INTERVAL '1 year') DESC,
|
ORDER BY (version = 'Quotes' AND odate >= CURRENT_DATE - INTERVAL '1 year') DESC,
|
||||||
qty DESC NULLS LAST
|
qty DESC NULLS LAST
|
||||||
) AS rn_lvq,
|
) END AS rn_lvq,
|
||||||
-- Per dataseg/version: most recent (version fixed in partition, so just date)
|
-- Per dataseg/version: most recent (version fixed in partition, so just date)
|
||||||
ROW_NUMBER() OVER (
|
CASE WHEN version = 'Actual' THEN ROW_NUMBER() OVER (
|
||||||
PARTITION BY customer, partgroup, dataseg, version
|
PARTITION BY customer, partgroup, dataseg, version
|
||||||
ORDER BY odate DESC NULLS LAST
|
ORDER BY odate DESC NULLS LAST
|
||||||
) AS rn_dss,
|
) END AS rn_dss,
|
||||||
ROW_NUMBER() OVER (
|
CASE WHEN version = 'Quotes' THEN ROW_NUMBER() OVER (
|
||||||
PARTITION BY customer, partgroup, dataseg, version
|
PARTITION BY customer, partgroup, dataseg, version
|
||||||
ORDER BY odate DESC NULLS LAST
|
ORDER BY odate DESC NULLS LAST
|
||||||
) AS rn_dsq
|
) END AS rn_dsq
|
||||||
FROM base b
|
FROM base b
|
||||||
),
|
),
|
||||||
flagged AS (
|
flagged AS (
|
||||||
@ -139,4 +139,4 @@ WITH DATA;
|
|||||||
|
|
||||||
--SELECT * FROM pricequote.lastpricedetail;
|
--SELECT * FROM pricequote.lastpricedetail;
|
||||||
|
|
||||||
CREATE INDEX lastpricedetail_idx ON pricequote.lastpricedetail(customer, partgroup);
|
CREATE INDEX lastpricedetail_idx ON pricequote.lastpricedetail(customer, partgroup);
|
||||||
|
Loading…
Reference in New Issue
Block a user