WITH
sel AS (select 'v1:P.P.PLT..' _v1ds, 'ALTMAN PLANTS' _cust, 'TFR001G0' _mold, 'D' _chan)
,sort AS (
    SELECT 
         p.agglevel
        ,CASE WHEN p.agglevel ? 'cust' THEN 'cust' ELSE 'market' END source
        ,COALESCE(gset.v1ds = (SELECT _v1ds FROM sel),false) v1ds_match
        ,gset.chan = _chan chan_match
        ,gset.*
        ,row_number() OVER (PARTITION BY p.agglevel ORDER BY avgunits DESC) rn
        ,stats.*
    FROM 
        rlarp.price_pool_dev p
        CROSS JOIN sel
        JOIN LATERAL jsonb_to_record(gset) AS gset(
             chan text
            ,mold text
            ,v1ds text
            ,v0ds text
            ,cust text
            ,vers text
            --,nurs text
            --,ghse text
        ) ON TRUE
        JOIN LATERAL jsonb_to_record(stats) AS stats(
             avgunits       numeric
            ,avgtargetprice numeric
            ,avgordcount    numeric
            ,avgcustcount   numeric
            ,early_season    int
            ,early_price     numeric
            ,recent_season   int
            ,recent_price    numeric
        ) ON TRUE
    WHERE
        gset @> jsonb_build_object(
            'mold', (SELECT _mold FROM sel)
            ,'vers', 'A'
        )
        AND (
            gset @> jsonb_build_object(
                'cust', (SELECT _cust FROM sel)
            )
            OR NOT gset ? 'cust'
        )
        AND COALESCE(stats.early_season,stats.recent_season) IS NOT NULL
        AND NOT p.agglevel ? 'nurs'
        AND NOT p.agglevel ? 'ghse'
    ORDER BY
        source ASC
        ,rn ASC
)
--,flag AS (
--SELECT 
--     --agglevel
--     CASE source
--        WHEN 'cust' THEN
--            CASE WHEN v1ds IS NOT NULL THEN
--                CASE WHEN v1ds_match   THEN 'customer exact' ELSE 
--                    CASE WHEN rn = 1 THEN 'customer v1ds vol' ELSE 'customer v1ds other' END
--                END 
--            ELSE 
--                CASE WHEN rn = 1 THEN 'customer v0ds vol' ELSE 'customer v0ds other' END
--            END
--        ELSE
--            CASE WHEN v1ds IS NOT NULL THEN
--                CASE WHEN v1ds_match   THEN 'market exact' ELSE 
--                    CASE WHEN rn = 1 THEN 'market v1ds vol' ELSE 'market v1ds other' END
--                END 
--            ELSE 
--                CASE WHEN rn = 1 THEN 'market v0ds vol' ELSE 'market v0ds other' END
--            END
--    END relevance
--    ,source
--    ,v1ds_match
--    ,chan_match
--    ,chan
--    ,mold
--    ,v1ds
--    ,v0ds
--    ,cust
--    ,vers
--    ,rn  
--    ,avgunits
--    ,avgordcount
--    ,avgcustcount
--    ,avgtargetprice
--    ,early_season
--    ,early_price
--    ,recent_season
--    ,recent_price
--FROM 
--    sort 
--)
--,rel AS (
--    SELECT * FROM (values
--         ('customer exact'     ,1)
--        ,('customer v0ds other',7)
--        ,('customer v0ds vol'  ,3)
--        ,('customer v1ds other',6)
--        ,('customer v1ds vol'  ,2)
--        ,('market exact'       ,4)
--        ,('market v0ds other'  ,9)
--        ,('market v0ds vol'    ,5)
--        ,('market v1ds other'  ,8)
--    ) x (flag,prefer)
--)
--,rel_sort AS (
--    SELECT 
--        -- flag.relevance
--        --,flag.source
--        --,rel.prefer
--        --,row_number() OVER (PARTITION BY flag.source ORDER BY rel.prefer ASC) best
--        jsonb_strip_nulls(
--            jsonb_build_object(
--                 relevance
--                ,jsonb_build_object(
--                      'avgunits'       ,avgunits
--                     ,'avgordcount'    ,avgordcount
--                     ,'avgcustcount'   ,avgcustcount
--                     ,'avgtargetprice' ,avgtargetprice
--                     ,'early_season'   ,early_season
--                     ,'early_price'    ,early_price
--                     ,'recent_season'  ,recent_season
--                     ,'recent_price'   ,recent_price
--                     ,'ds'             ,COALESCE(v1ds,v0ds)
--                    ,'rank'
--                    ,row_number() OVER (PARTITION BY flag.source ORDER BY rel.prefer ASC)
--                )
--            )
--        ) doc
--    FROM 
--        flag 
--        LEFT OUTER JOIN rel ON
--            rel.flag = flag.relevance
--    WHERE 
--        relevance ~ 'vol|exact'
--)
----SELECT jsonb_pretty(jsonb_agg(doc)) FROM rel_sort
----SELECT jsonb_pretty(jsonb_obj_aggc(doc)) FROM rel_sort
SELECT * FROM sort
