diff --git a/svc/queries/product_performance.go b/svc/queries/product_performance.go index 6a60dc2..9721aba 100644 --- a/svc/queries/product_performance.go +++ b/svc/queries/product_performance.go @@ -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