vault backup: 2023-11-03 11:00:54
This commit is contained in:
		
							parent
							
								
									0be561a7f2
								
							
						
					
					
						commit
						2fe17ac58c
					
				
							
								
								
									
										77
									
								
								sql/get.sql
									
									
									
									
									
								
							
							
						
						
									
										77
									
								
								sql/get.sql
									
									
									
									
									
								
							@ -1,46 +1,61 @@
 | 
			
		||||
WITH
 | 
			
		||||
--getj AS (
 | 
			
		||||
--    SELECT
 | 
			
		||||
--        jsonb_build_object('mold',stlc) doc
 | 
			
		||||
--    FROM
 | 
			
		||||
--        "CMS.CUSLG".itemm 
 | 
			
		||||
--    WHERE 
 | 
			
		||||
--        item = $1
 | 
			
		||||
--)
 | 
			
		||||
agg AS (
 | 
			
		||||
getj AS (
 | 
			
		||||
    SELECT
 | 
			
		||||
    (
 | 
			
		||||
        SELECT
 | 
			
		||||
            jsonb_build_object('mold',JSON_AGG(DISTINCT stlc)) doc
 | 
			
		||||
        FROM
 | 
			
		||||
            "CMS.CUSLG".itemm 
 | 
			
		||||
        WHERE 
 | 
			
		||||
            item ~ 'TUH10000A10B04'
 | 
			
		||||
    ) ||
 | 
			
		||||
    (
 | 
			
		||||
        SELECT
 | 
			
		||||
            jsonb_build_object('cust',JSONB_AGG(DISTINCT c.dba))
 | 
			
		||||
        FROM
 | 
			
		||||
            rlarp.cust c
 | 
			
		||||
        WHERE 
 | 
			
		||||
            c.dba ~ 'DIAMOND R'
 | 
			
		||||
    ) doc
 | 
			
		||||
)
 | 
			
		||||
,agg AS (
 | 
			
		||||
    SELECT 
 | 
			
		||||
         gset
 | 
			
		||||
        ,agglevel
 | 
			
		||||
        ,(SELECT string_agg(ae.v,'.') FROM jsonb_array_elements_text(p.agglevel) ae(v)) agglvl
 | 
			
		||||
        ,season
 | 
			
		||||
        ,(select doc from getj) gdoc
 | 
			
		||||
    FROM 
 | 
			
		||||
        rlarp.price_pool_dev 
 | 
			
		||||
        rlarp.price_pool_dev p
 | 
			
		||||
    WHERE  
 | 
			
		||||
        --gset @> '{"mold":"XNS0T1G3"}'::jsonb 
 | 
			
		||||
        --gut the exact mold and actuals only
 | 
			
		||||
        gset @> jsonb_build_object(
 | 
			
		||||
            'mold','TUH10000',
 | 
			
		||||
            'mold',(SELECT doc->'mold'->>0 FROM getj),
 | 
			
		||||
            'vers','A'
 | 
			
		||||
        )
 | 
			
		||||
        --pull either the exact customer or no customer
 | 
			
		||||
        AND (
 | 
			
		||||
            gset->>'cust' ~ 'DIAMOND'
 | 
			
		||||
            gset @> jsonb_build_object(
 | 
			
		||||
                'cust',(SELECT doc->'cust'->>0 FROM getj)
 | 
			
		||||
            )
 | 
			
		||||
            OR NOT gset ? 'cust'
 | 
			
		||||
        )
 | 
			
		||||
    ORDER BY 
 | 
			
		||||
        agglevel ASC
 | 
			
		||||
)
 | 
			
		||||
SELECT
 | 
			
		||||
    jsonb_build_object('agg',agglevel )
 | 
			
		||||
    || jsonb_build_object(
 | 
			
		||||
        'data',
 | 
			
		||||
        jsonb_agg(gset || jsonb_build_object('season',season))
 | 
			
		||||
    ) data
 | 
			
		||||
FROM
 | 
			
		||||
    agg
 | 
			
		||||
GROUP BY
 | 
			
		||||
    agglevel
 | 
			
		||||
LIMIT 10
 | 
			
		||||
--SELECT 
 | 
			
		||||
--     jsonb_pretty(agglevel) agglevel
 | 
			
		||||
--    ,jsonb_pretty(gset)     gset
 | 
			
		||||
--    ,jsonb_pretty(season)   season
 | 
			
		||||
--FROM  
 | 
			
		||||
--    agg
 | 
			
		||||
,final AS (
 | 
			
		||||
    SELECT
 | 
			
		||||
        jsonb_build_object(
 | 
			
		||||
            agg.agglvl,
 | 
			
		||||
            jsonb_build_object(
 | 
			
		||||
                'data',
 | 
			
		||||
                jsonb_agg(gset || jsonb_build_object('season',season))
 | 
			
		||||
            ) 
 | 
			
		||||
        ) data
 | 
			
		||||
        ,gdoc
 | 
			
		||||
    FROM
 | 
			
		||||
        agg
 | 
			
		||||
    GROUP BY
 | 
			
		||||
        agglvl
 | 
			
		||||
        ,gdoc
 | 
			
		||||
)
 | 
			
		||||
select * from final
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										42
									
								
								sql/guidance.pg.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								sql/guidance.pg.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,42 @@
 | 
			
		||||
CREATE OR REPLACE FUNCTION rlarp.guidancejsd(_p jsonb, cust text, prod text)
 | 
			
		||||
RETURNS jsonb
 | 
			
		||||
LANGUAGE plv8
 | 
			
		||||
AS $function$
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function findMostRecentPrice(data, cust, prod) {
 | 
			
		||||
  let mostRecentPrice = null;
 | 
			
		||||
  let mostRecentYear = null;
 | 
			
		||||
 | 
			
		||||
  // Iterate through each product
 | 
			
		||||
  data.forEach(product => {
 | 
			
		||||
    // Check if the product matches the customer channel and version
 | 
			
		||||
    if (product.chan === cust && (product.v1ds === prod || product.v0ds === prod)) {
 | 
			
		||||
      // Iterate through the seasons for the product
 | 
			
		||||
      for (let year in product.season) {
 | 
			
		||||
        // Convert year to number for comparison
 | 
			
		||||
        let yearNum = parseInt(year);
 | 
			
		||||
        // Check if this year is more recent than the current most recent year
 | 
			
		||||
        if (mostRecentYear === null || yearNum > mostRecentYear) {
 | 
			
		||||
          mostRecentYear = yearNum;
 | 
			
		||||
          // Update the most recent price
 | 
			
		||||
          mostRecentPrice = product.season[year].price_usd;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  return mostRecentPrice;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Example usage:
 | 
			
		||||
const jsonData = _p;
 | 
			
		||||
 | 
			
		||||
const cust = 'W'; // or 'D', depending on the customer
 | 
			
		||||
const prod = 'TUH10000'; // the product version you're interested in
 | 
			
		||||
 | 
			
		||||
const price = findMostRecentPrice(jsonData.data, cust, prod);
 | 
			
		||||
console.log(`The most recent price for the customer is: ${price}`);
 | 
			
		||||
return price;
 | 
			
		||||
 | 
			
		||||
$function$;
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user