Advertisement
zotov-vs

dwh_orders

May 30th, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 5.76 KB | None | 0 0
  1. CREATE OR REPLACE ALGORITHM = MERGE VIEW dwh_orders AS
  2.  
  3. SELECT o.orders_id AS orders_id -- '№ заказа'
  4.     , o.customers_id AS customers_id -- 'ID клиента'
  5.     , IFNULL(umS.utm_value, '') AS UTM_source -- 'UTM_source (заказ)'
  6.     , IFNULL(umM.utm_value, '') AS UTM_medium -- 'UTM_medium (заказ)'
  7.     , IFNULL(umС.utm_value, '') AS UTM_campaign -- 'UTM_campaign (заказ)'
  8.     , IFNULL(umT.utm_value, '') AS UTM_term -- 'UTM_term (заказ)'
  9.     , IFNULL(umContent.utm_value, '') AS UTM_content -- 'UTM_content (заказ)'
  10.     , os.orders_status_id
  11.     , o.customers_status AS current_customers_status_id
  12.     , IF(os.orders_status_id IN (10, 22), 'Доставлен', os.orders_status_name) AS orders_status_name -- 'Статус заказа'
  13.     , IF(o.is_partial_return = 1, 'Частичный возврат', os.orders_status_name) AS orders_status_partial_return_name -- 'Статус заказа (с возвратом)'
  14.     , IF(ot.discount_type = 2, ot.discount, 0) AS orders_sum_discount_promo -- 'Скидка за промо-код, руб.'
  15.     , CAST(IFNULL(ot.discount, 0) AS DECIMAL(15,2)) AS orders_sum_discount
  16.     , IFNULL(ot.discount_type, 0) AS discount_type
  17.     , IFNULL(ot.credit,0) AS orders_sum_credit -- 'Бонусы в заказе'
  18.     , IFNULL((SELECT
  19.                         pl.number
  20.                 FROM points_log_to_orders AS plto
  21.                     LEFT JOIN remote_points_log AS pl
  22.                                 ON pl.points_log_id = plto.points_log_id
  23.                                 AND pl.points_change_type_id IN (13, 14, 15, 16, 17, 18)
  24.                     WHERE plto.orders_id = o.orders_id
  25.                     ORDER BY plto.points_log_id DESC
  26.                     LIMIT 1
  27.                                 )
  28.                
  29.                                 , 0) AS orders_sum_points_count  -- 'Баллы в заказе'
  30.    
  31.     , CAST(IFNULL(ot.total, 0) + IFNULL(ot.noncash, 0) AS DECIMAL(15,2)) AS orders_sum_total -- 'Сумма заказа, руб.'
  32.     , IFNULL(ot.noncash, 0) AS orders_sum_noncash
  33.     , IFNULL(ot.subtotal, 0) AS orders_sum_subtotal
  34.     , IFNULL(ot.shipping_original,0) AS orders_sum_shipping_original
  35.     , o.orders_consolidation
  36.     , o.shipping_class AS shipping_class -- 'Способ доставки'
  37.     , CAST(IFNULL(ot.shipping,0) AS DECIMAL(15,2)) AS orders_sum_shipping -- 'Стоимость доставки, руб.'
  38.     , IFNULL(ot.service_cost,0) AS orders_sum_service_cost -- 'Стоимость сервисного сбора, руб.'
  39.     , CONCAT(o.payment_method) AS payment_method -- 'Способ оплаты'
  40.     , IFNULL(CONCAT(bg.boxes_group_title, ' (', b.boxes_title, ')'), 'без упаковки') AS boxes_type -- 'Упаковка'
  41.     , o.customers_fias_id
  42.     , IF(o.customers_fias_id IS NULL OR o.customers_fias_id = '' OR f.id IS NULL, TRIM(COALESCE(o.customers_city, '')), COALESCE(f.offname, '')) AS orders_delivery_sity -- 'Название нас.пункта доставки'
  43.     , IFNULL(op.platform, '') AS orders_platform_source -- 'Устройство, с которого сделан заказ'
  44.     , DATE(COALESCE(po.date_purchased, o.date_purchased, '0000-00-00')) AS orders_purchased_date
  45.     , CAST(DATE_FORMAT(COALESCE(po.date_purchased, o.date_purchased, '0000-00-00'),'%Y%m%d') AS INT) AS orders_purchased_date_id
  46.     , TIME(COALESCE(po.date_purchased, o.date_purchased, '0000-00-00')) AS orders_purchased_time -- 'Время заказа'
  47.     , CAST(DATE_FORMAT(COALESCE(po.date_purchased, o.date_purchased, '0000-00-00'),'%H%i%s') AS INT) AS orders_purchased_time_id
  48.     , DATE(COALESCE(o.date_delivery_real, '0000-00-00')) AS orders_date_delivery_real
  49.     , CAST(DATE_FORMAT(COALESCE(o.date_delivery_real, '0000-00-00'),'%Y%m%d') AS INT) AS orders_date_delivery_real_id
  50.     , IFNULL(pr.promocodes_word, '') AS promocodes_name -- 'Название промокода'
  51.     , IFNULL(pr.promocodes_value, '') AS promocodes_value -- 'Сумма скидки за промокод'
  52.     , IF((SELECT MIN(oo.orders_id) FROM orders AS oo WHERE oo.customers_id = o.customers_id) = o.orders_id, 1,0) AS is_first_customers_orders
  53.     , IFNULL(osr.parent_orders_id, o.orders_id) AS parent_orders_id
  54.     , IF(osr.parent_orders_id IS NULL, COALESCE((SELECT distinct 1 FROM orders_separate_results AS osr2 WHERE osr2.parent_orders_id = o.orders_id),0), 2) parent_orders_type_id
  55.     , o.last_date_update AS last_date_update
  56.     , c.sites_id AS sites_id
  57.     , o.customers_postamat_id AS postamat_id
  58.  
  59. FROM orders AS o
  60.     JOIN orders_status AS os ON os.orders_status_id = o.orders_status
  61.     LEFT JOIN fias AS f ON f.id = o.customers_fias_id
  62.     JOIN customers c ON c.customers_id = o.customers_id
  63.     LEFT JOIN customers_source cs ON cs.customers_id = c.customers_id
  64.     LEFT JOIN utm_marks_binds umb ON umb.utm_marks_binds_id = cs.utm_marks_binds_id
  65.     LEFT JOIN utm_marks umS ON umS.utm_marks_id = umb.utm_source
  66.     LEFT JOIN utm_marks umM ON umM.utm_marks_id = umb.utm_medium
  67.     LEFT JOIN utm_marks umС ON umС.utm_marks_id = umb.utm_campaign
  68.     LEFT JOIN utm_marks umT ON umT.utm_marks_id = umb.utm_term
  69.     LEFT JOIN utm_marks umContent ON umContent.utm_marks_id = umb.utm_content
  70.     LEFT JOIN orders_total ot ON ot.orders_id = o.orders_id
  71.  
  72.     LEFT JOIN boxes b ON b.boxes_id = o.orders_box_id
  73.     LEFT JOIN boxes_group bg ON bg.boxes_group_id = b.boxes_group_id
  74.     LEFT JOIN orders_platform AS op ON op.orders_id = o.orders_id
  75.              -- LEFT JOIN tmp_orders_first_customer_order as tmporfco on tmporfco.orders_id = o.orders_id
  76.     LEFT JOIN orders_to_promocodes AS otp ON otp.orders_id = o.orders_id
  77.     LEFT JOIN promocodes AS pr ON pr.promocodes_id = otp.promocodes_id
  78.     LEFT JOIN orders_separate_results AS osr ON osr.orders_id = o.orders_id
  79.     LEFT JOIN orders AS po ON osr.parent_orders_id = po.orders_id
  80.    
  81.     JOIN dwh_upload_config AS duc on duc.component = 'dwh_orders'
  82. WHERE
  83.     (duc.date_from_use = 0 OR o.last_date_update >= duc.date_from)
  84.     AND (duc.date_to_use = 0 OR o.last_date_update <= duc.date_to)
  85.     AND (duc.id_from_use = 0 OR o.orders_id >= duc.id_from)
  86.     AND (duc.id_to_use = 0 OR o.orders_id <= duc.id_to)
  87. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement