thongthongthong

Untitled

Dec 15th, 2021 (edited)
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.16 KB | None | 0 0
  1. WITH
  2. order_tab_union AS (
  3.         SELECT
  4.             tb1.uid,
  5.             tb1.order_id,
  6.             tb1.topup_payable_amount/1000000 AS amount,
  7.             tb1.payment_payable_amount/1000000 AS payment_payable_amount,
  8.             tb1.payment_cash_amount/1000000 AS cashback,
  9.             tb1.currency_amount/1000000 currency_amount,
  10.             tb1.topup_coins_amount/1000000 topup_coins_amount,
  11.             tb1.payment_coins_num/1000000 payment_coins_num,
  12.             tb1.payment_channel_id,
  13.             tb1.topup_channel_id,
  14.             tb1.caller,
  15.             tb1.extra_data,
  16.             tb1.item_id,
  17.             json_extract_scalar(tb1.extra_data,'$.payment.__private__.partner.partner_reference_mct') mct,
  18.             tb1.STATUS,
  19.             tb1.memo,
  20.             tb1.TYPE,
  21.             tb1.valid_time,
  22.             ex.exchange_rate
  23.         FROM shopeepay.airpay_payment_txn_vn_db__txn_order_tab_union__reg_daily_s0_live tb1
  24.         LEFT JOIN mp_order.dim_exchange_rate__reg_s0_live ex ON DATE(from_unixtime(tb1.valid_time-3600)) = ex.grass_date AND grass_region = 'VN'
  25.         WHERE DATE(from_unixtime(create_time-3600)) > DATE '2021-12-09'
  26.  
  27.     )
  28. ,orders AS (
  29. SELECT
  30. DATE(from_unixtime(valid_time-3600)) DATE
  31. ,CASE
  32. WHEN tb1.amount >= 0 AND tb1.amount < 100000 THEN '1 0-100k'
  33. ELSE '2 >100k'
  34. END range
  35. ,CASE WHEN tb1.payment_channel_id = 21011 THEN 'shp'
  36.       WHEN tb1.payment_channel_id = 21003 THEN 'spp'
  37. END SOURCE
  38. ,COUNT(DISTINCT tb1.order_id) orders
  39. ,SUM(amount/exchange_rate) gmv
  40.  
  41. FROM order_tab_union tb1
  42. -- left join airpay_vn.airpay_payment_txn_stats_vn_db__order_extra_tab tb2 on tb1.order_id= tb2.order_id
  43. LEFT JOIN airpay_vn.airpay_payment_common_vn_db__channel_tab c ON tb1.payment_channel_id = c.channel_id
  44. LEFT JOIN (SELECT channel_id, max_by(code, id) code FROM airpay_vn.airpay_payment_common_vn_db__product_code_tab GROUP BY 1) pc_i ON c.channel_id = pc_i.channel_id
  45. LEFT JOIN (SELECT channel_type, max_by(code, id) code FROM airpay_vn.airpay_payment_common_vn_db__product_code_tab GROUP BY 1) pc_t ON c.TYPE = pc_t.channel_type
  46.  
  47. WHERE 1=1
  48. AND tb1.STATUS NOT IN (16, 19)
  49. AND DATE(from_unixtime(valid_time-3600)) >= DATE '2022-01-11'
  50. AND tb1.STATUS = 8
  51. AND tb1.memo <> 'test'
  52. AND tb1.topup_channel_id NOT IN (11100,13002,13003,13004,13009,13010,13011,13103)
  53. -- and tb1.payment_channel_id not in (21000, 21002,21003,21004,21005,21006,21007,21008,21009,100021011,100021016,
  54. -- 100021017,100021040,999991,999992,999993,100021018,100021019,100021020,100021021,
  55. -- 100021022,100021023,100021024,100021025,100021026,100021027,100021028,100021029,
  56. -- 100021040,100021041,100021042,100021043,100001,110012,210001,210002,210003,210004,
  57. -- 210005,210006,210007,210008,210009,210010,210011,210013,210014,210015,210016,210017,
  58. -- 210018,21031,21032,21033,21034,21035,21039,10200077,10200086,10200092,10200097,11000001,11000002,
  59. -- 310001,310002,11000003,100021013,100021014,100021015,21070,21011,31000,31001,
  60. --           21017)
  61. AND tb1.payment_channel_id IN (21003,21004,21005,21006,21008,21009,21011)
  62. AND (regexp_like(json_extract_scalar(tb1.extra_data, '$.payment.transfer.purpose'), 'CashBack###Tien thuong het han') = FALSE --exclude clawback P2P
  63. OR
  64. json_extract_scalar(tb1.extra_data, '$.payment.transfer.purpose') IS NULL)
  65. GROUP BY 1, 2, 3
  66. )
  67. ,users AS (
  68. SELECT
  69. DATE(from_unixtime(valid_time-3600)) DATE
  70. ,COUNT(DISTINCT uid) users
  71.  
  72. FROM order_tab_union tb1
  73. -- left join airpay_vn.airpay_payment_txn_stats_vn_db__order_extra_tab tb2 on tb1.order_id= tb2.order_id
  74. LEFT JOIN airpay_vn.airpay_payment_common_vn_db__channel_tab c ON tb1.payment_channel_id = c.channel_id
  75. LEFT JOIN (SELECT channel_id, max_by(code, id) code FROM airpay_vn.airpay_payment_common_vn_db__product_code_tab GROUP BY 1) pc_i ON c.channel_id = pc_i.channel_id
  76. LEFT JOIN (SELECT channel_type, max_by(code, id) code FROM airpay_vn.airpay_payment_common_vn_db__product_code_tab GROUP BY 1) pc_t ON c.TYPE = pc_t.channel_type
  77.  
  78. WHERE 1=1
  79. AND tb1.STATUS NOT IN (16, 19)
  80. AND DATE(from_unixtime(valid_time-3600)) >= DATE '2022-01-11'
  81. AND tb1.STATUS = 8
  82. AND tb1.memo <> 'test'
  83. AND tb1.topup_channel_id NOT IN (11100,13002,13003,13004,13009,13010,13011,13103)
  84. -- and tb1.payment_channel_id not in (21000, 21002,21003,21004,21005,21006,21007,21008,21009,100021011,100021016,
  85. -- 100021017,100021040,999991,999992,999993,100021018,100021019,100021020,100021021,
  86. -- 100021022,100021023,100021024,100021025,100021026,100021027,100021028,100021029,
  87. -- 100021040,100021041,100021042,100021043,100001,110012,210001,210002,210003,210004,
  88. -- 210005,210006,210007,210008,210009,210010,210011,210013,210014,210015,210016,210017,
  89. -- 210018,21031,21032,21033,21034,21035,21039,10200077,10200086,10200092,10200097,11000001,11000002,
  90. -- 310001,310002,11000003,100021013,100021014,100021015,21070,21011,31000,31001,
  91. --           21017)
  92. AND tb1.payment_channel_id IN (21003,21004,21005,21006,21008,21009,21011)
  93. AND (regexp_like(json_extract_scalar(tb1.extra_data, '$.payment.transfer.purpose'), 'CashBack###Tien thuong het han') = FALSE --exclude clawback P2P
  94. OR
  95. json_extract_scalar(tb1.extra_data, '$.payment.transfer.purpose') IS NULL)
  96. GROUP BY 1
  97. )
  98. SELECT
  99. *
  100. FROM
  101. orders
  102. LEFT JOIN users USING(DATE)
  103. ORDER BY 1, 2
Add Comment
Please, Sign In to add comment