Fix product performance grouped JSON build
This commit is contained in:
@@ -3230,62 +3230,68 @@ func queryProductPerformanceSQLGroupRows(ctx context.Context, pg *sql.DB, mode,
|
||||
return nil, err
|
||||
}
|
||||
query := productPerformanceSQLSourceCTE(mode) + fmt.Sprintf(`
|
||||
SELECT jsonb_build_object(
|
||||
'group_value', group_value,
|
||||
'label', group_value,
|
||||
'count', row_count,
|
||||
'recommendation', CASE WHEN recommendation <> '' THEN recommendation ELSE row_count::text || ' satir' END,
|
||||
'image_product_code', image_product_code,
|
||||
'image_color_code', image_color_code,
|
||||
'image_yaka_kodu', image_yaka_kodu,
|
||||
'product_code', CASE WHEN $%d = 'product_code' THEN group_value ELSE product_code END,
|
||||
'color_code', CASE WHEN $%d = 'color_code' THEN group_value ELSE color_code END,
|
||||
'yaka_kodu', CASE WHEN $%d = 'yaka_kodu' THEN group_value ELSE yaka_kodu END,
|
||||
'item_description', item_description,
|
||||
'kategori', CASE WHEN $%d = 'kategori' THEN group_value ELSE kategori END,
|
||||
'askili_yan', CASE WHEN $%d = 'askili_yan' THEN group_value ELSE askili_yan END,
|
||||
'urun_ilk_grubu', CASE WHEN $%d = 'urun_ilk_grubu' THEN group_value ELSE urun_ilk_grubu END,
|
||||
'urun_ana_grubu', CASE WHEN $%d = 'urun_ana_grubu' THEN group_value ELSE urun_ana_grubu END,
|
||||
'urun_alt_grubu', CASE WHEN $%d = 'urun_alt_grubu' THEN group_value ELSE urun_alt_grubu END,
|
||||
'market_key', CASE WHEN $%d = 'market_key' THEN group_value ELSE market_key END,
|
||||
'stock_qty', stock_qty,
|
||||
'sales_qty_90d', sales_qty_90d,
|
||||
'sales_qty_180d', sales_qty_180d,
|
||||
'sales_qty_365d', sales_qty_365d,
|
||||
'sales_qty_total', sales_qty_total,
|
||||
'sales_usd_90d', sales_usd_90d,
|
||||
'sales_usd_180d', sales_usd_180d,
|
||||
'sales_usd_365d', sales_usd_365d,
|
||||
'sales_usd_total', sales_usd_total,
|
||||
'avg_price_usd_90d', avg_price_usd_90d,
|
||||
'avg_price_usd_180d', avg_price_usd_180d,
|
||||
'cost_price_usd', cost_price_usd,
|
||||
'base_price_usd', base_price_usd,
|
||||
'base_price_try', base_price_try,
|
||||
'gross_profit_usd_90d', gross_profit_usd_90d,
|
||||
'gross_profit_usd_180d', gross_profit_usd_180d,
|
||||
'gross_margin_90d', gross_margin_90d,
|
||||
'gross_margin_180d', gross_margin_180d,
|
||||
'unit_profit_cost_90d', unit_profit_cost_90d,
|
||||
'unit_profit_cost_180d', unit_profit_cost_180d,
|
||||
'unit_profit_base_90d', unit_profit_base_90d,
|
||||
'unit_profit_base_180d', unit_profit_base_180d,
|
||||
'market_count_90d', market_count_90d,
|
||||
'customer_count_90d', customer_count_90d,
|
||||
'sales_index_90d', sales_index_90d,
|
||||
'price_index_90d', price_index_90d,
|
||||
'margin_index_90d', margin_index_90d,
|
||||
'performance_score', performance_score,
|
||||
'performance_bucket', performance_bucket,
|
||||
'idle_cost_usd', idle_cost_usd,
|
||||
'stock_days_90d', stock_days_90d,
|
||||
'stock_days_180d', stock_days_180d,
|
||||
'stock_days_365d', stock_days_365d,
|
||||
'stock_days_total', stock_days_total,
|
||||
'stock_turnover_90d', CASE WHEN avg_stock_90d > 0 THEN sales_qty_90d / NULLIF(avg_stock_90d,0) ELSE 0 END,
|
||||
'stock_turnover_180d', CASE WHEN avg_stock_180d > 0 THEN sales_qty_180d / NULLIF(avg_stock_180d,0) ELSE 0 END,
|
||||
'stock_turnover_365d', CASE WHEN avg_stock_365d > 0 THEN sales_qty_365d / NULLIF(avg_stock_365d,0) ELSE 0 END,
|
||||
'stock_turnover_total', CASE WHEN avg_stock_total > 0 THEN sales_qty_total / NULLIF(avg_stock_total,0) ELSE 0 END
|
||||
SELECT (
|
||||
jsonb_build_object(
|
||||
'group_value', group_value,
|
||||
'label', group_value,
|
||||
'count', row_count,
|
||||
'recommendation', CASE WHEN recommendation <> '' THEN recommendation ELSE row_count::text || ' satir' END,
|
||||
'image_product_code', image_product_code,
|
||||
'image_color_code', image_color_code,
|
||||
'image_yaka_kodu', image_yaka_kodu,
|
||||
'product_code', CASE WHEN $%d = 'product_code' THEN group_value ELSE product_code END,
|
||||
'color_code', CASE WHEN $%d = 'color_code' THEN group_value ELSE color_code END,
|
||||
'yaka_kodu', CASE WHEN $%d = 'yaka_kodu' THEN group_value ELSE yaka_kodu END,
|
||||
'item_description', item_description,
|
||||
'kategori', CASE WHEN $%d = 'kategori' THEN group_value ELSE kategori END,
|
||||
'askili_yan', CASE WHEN $%d = 'askili_yan' THEN group_value ELSE askili_yan END,
|
||||
'urun_ilk_grubu', CASE WHEN $%d = 'urun_ilk_grubu' THEN group_value ELSE urun_ilk_grubu END,
|
||||
'urun_ana_grubu', CASE WHEN $%d = 'urun_ana_grubu' THEN group_value ELSE urun_ana_grubu END,
|
||||
'urun_alt_grubu', CASE WHEN $%d = 'urun_alt_grubu' THEN group_value ELSE urun_alt_grubu END,
|
||||
'market_key', CASE WHEN $%d = 'market_key' THEN group_value ELSE market_key END
|
||||
)
|
||||
|| jsonb_build_object(
|
||||
'stock_qty', stock_qty,
|
||||
'sales_qty_90d', sales_qty_90d,
|
||||
'sales_qty_180d', sales_qty_180d,
|
||||
'sales_qty_365d', sales_qty_365d,
|
||||
'sales_qty_total', sales_qty_total,
|
||||
'sales_usd_90d', sales_usd_90d,
|
||||
'sales_usd_180d', sales_usd_180d,
|
||||
'sales_usd_365d', sales_usd_365d,
|
||||
'sales_usd_total', sales_usd_total,
|
||||
'avg_price_usd_90d', avg_price_usd_90d,
|
||||
'avg_price_usd_180d', avg_price_usd_180d,
|
||||
'cost_price_usd', cost_price_usd,
|
||||
'base_price_usd', base_price_usd,
|
||||
'base_price_try', base_price_try,
|
||||
'gross_profit_usd_90d', gross_profit_usd_90d,
|
||||
'gross_profit_usd_180d', gross_profit_usd_180d,
|
||||
'gross_margin_90d', gross_margin_90d,
|
||||
'gross_margin_180d', gross_margin_180d
|
||||
)
|
||||
|| jsonb_build_object(
|
||||
'unit_profit_cost_90d', unit_profit_cost_90d,
|
||||
'unit_profit_cost_180d', unit_profit_cost_180d,
|
||||
'unit_profit_base_90d', unit_profit_base_90d,
|
||||
'unit_profit_base_180d', unit_profit_base_180d,
|
||||
'market_count_90d', market_count_90d,
|
||||
'customer_count_90d', customer_count_90d,
|
||||
'sales_index_90d', sales_index_90d,
|
||||
'price_index_90d', price_index_90d,
|
||||
'margin_index_90d', margin_index_90d,
|
||||
'performance_score', performance_score,
|
||||
'performance_bucket', performance_bucket,
|
||||
'idle_cost_usd', idle_cost_usd,
|
||||
'stock_days_90d', stock_days_90d,
|
||||
'stock_days_180d', stock_days_180d,
|
||||
'stock_days_365d', stock_days_365d,
|
||||
'stock_days_total', stock_days_total,
|
||||
'stock_turnover_90d', CASE WHEN avg_stock_90d > 0 THEN sales_qty_90d / NULLIF(avg_stock_90d,0) ELSE 0 END,
|
||||
'stock_turnover_180d', CASE WHEN avg_stock_180d > 0 THEN sales_qty_180d / NULLIF(avg_stock_180d,0) ELSE 0 END,
|
||||
'stock_turnover_365d', CASE WHEN avg_stock_365d > 0 THEN sales_qty_365d / NULLIF(avg_stock_365d,0) ELSE 0 END,
|
||||
'stock_turnover_total', CASE WHEN avg_stock_total > 0 THEN sales_qty_total / NULLIF(avg_stock_total,0) ELSE 0 END
|
||||
)
|
||||
) AS row_json
|
||||
FROM (
|
||||
SELECT
|
||||
|
||||
Reference in New Issue
Block a user